sum()不用NVL()函数
应该没有问题。报的什么错?
应该没有问题。报的什么错?
解决方案 »
- 数据库设计
- job问题询问
- 关于一个Oracle触发器的问题请教大家了,不胜感谢
- c#调用oracle存储过程的问题 报错:调用 '' 时参数个数或类型错误
- 求救一個select連續n天的語句
- Oracle10数据库中为啥空字符串总自动变成个null值?
- 如何在sql*plus中执行一个txt文件?
- 表里有个name字段,我想把所有的name值都取出来形成一个字符串,怎么写SQL?
- 如何在同一台机器中测试与oracle的连接???
- to_number转换vchar2的问题
- unix系统下面启动oracle的图形界面
- 请教unable to allocate 8704 bytes of shared memory 是什么错误,如何改正?
或者:直接用pl/sql(如:pl/sql edit,pl/sql developer)工具编译。
SET fas_depretotal =
(SELECT x.fas_deprebefore + NVL (SUM (fsd_amount), 0)
FROM fa_fas_depre
WHERE fsd_fasid = fas_id)
CREATE OR REPLACE PROCEDURE UpdBatch (
p_Date in char) AS
BEGIN
update fa_fas_detail
set fas_depretotal=fas_deprebefore+
(select nvl(sum(fsd_amount),0) from fa_fas_depre
where fsd_fasid=fas_id)
;
commit;
end;
/
错误:
LINE/COL ERROR
-------- -----------------------------------------------------------------
6/2 PLS-00103: 出现符号 "SELECT"在需要下列之一时:
(-+modnotnullothers
<an identifier><a double-quoted delimited-identifier>
<a bind variable>avgcountcurrentexistsmaxminpriorsqlstddev
sumvarianceexecuteforalltimetimestampintervaldate
<a string literal with character set specification>
<a number><a single-quoted SQL string>9/1 PLS-00103: 出现符号 "COMMIT"
AS
BEGIN
UPDATE fa_fas_detail x
SET fas_depretotal = (SELECT x.fa_fas_detail + SUM (fsd_amount)
FROM fa_fas_depre
WHERE fsd_fasid = fas_id); COMMIT;
END;
解决了这个问题,就结分
UPDATE TABLE_NAME
SET (COL1,COL2,COL3)= (SUBQUERY..)
WHERE ...;ORACLE传统语法中不能用SUBQUERY代替一个列,比如在SQL SERVER中可以这么写:
SELECT COL1, (SELECT COL2 FROM TABLE2 WHERE ....) COLX
FROM TABLE1
WHERE ...;
ORACLE8I以后的版本支持在SQLPLUS中执行这样的查询,但是PL/SQL中是不支持的,传统的写法应该是:
SELECT COL1, COL2 COLX
FROM TABLE1, TABLE2
WHERE ....;