SQL存储过程定义的变量赋值问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL存储过程定义的变量赋值问题相关的知识,希望对你有一定的参考价值。

我在存储过程里定义了变量
wcfy NUMBER;
然后有写了一个赋值语句
wcfy:=select sum(ZSF+QTFY+CCF+CCBZFY+WCRLF) from LQSHDWCSQD where WCDH=dh_in;
为什么老是提示我下面这种东西?是什么意思?

错误:PLS-00103: Encountered the symbol "SELECT" when expecting one of the following:

( - + case mod new not null <an identifier>
<a double-quoted delimited-identifier> <a bind variable> avg
count current exists max min prior sql stddev sum variance
execute forall merge time timestamp interval date
<a string literal with character set specification>
<a number> <a single-quoted SQL string> pipe
<an alternatively-quoted string literal with character set specification>
<an alternatively-quo
行:2935
文本:wcfy:=select sum(ZSF+QTFY+CCF+CCBZFY+WCRLF) from LQSHDWCSQD where WCDH=dh_in;
sum(ZSF+QTFY+CCF+CCBZFY+WCRLF)这里面的字段都是NUMBER类型的

刚才试了isnull这种方法不行哦~而且NUMBER也是数值型的,不可能存在NULL的。也试过用CAST来强制转换了,也不行。

如果都是NUMBER类型的话也可以不用SUM,但是现在出错的问题不是这个问题~

你都把字段值加起来了,那还要SUM()函数干嘛呢?直接写成wcfy:=select ZSF+QTFY+CCF+CCBZFY+WCRLF from LQSHDWCSQD where WCDH=dh_in;
就可以了(如果字段ZSF,QTFY,CCF,CCBZFY,WCRLF是在一条记录里的话 )。
参考技术A SQL中好像没有number型的吧,接近一点的话有个,numeric浮点型,鄙人愚昧!! 参考技术B wcfy:=select sum(isnull(ZSF,0)+isnull(QTFY+isnull(CCF,0)+isnull(CCBZFY,0)+isnull(WCRLF,0)) from LQSHDWCSQD where WCDH=dh_in;

换成这样试试本回答被提问者和网友采纳

以上是关于SQL存储过程定义的变量赋值问题的主要内容,如果未能解决你的问题,请参考以下文章

SQL存储过程中怎样给变量赋值?

在SQL存储过程中,如何声明变量,赋值变量。最好有具体语句配上实例。3Q啦。谢谢各位大侠的帮忙

Sql server 存储过程中怎么将变量赋值?

oracle变量赋值及打印

存储过程给变量赋值

SQL存储过程如何将结果放入变量?