【问题标题】:ORA -00909 //sql statement ignored ...procedure created with compilation errorsORA -00909 //sql 语句被忽略 ...过程创建时出现编译错误
【发布时间】:2017-03-28 19:00:41
【问题描述】:
create or replace procedure Pupdate(   
peno in emp.empno%type,  
psal in emp.sal%type,  
pcomm in emp.comm%type)  
IS   
BEGIN  
UPDATE emp SET sal=sal+psal, comm=NVL(comm)+pcomm WHERE empno=peno;  
END Pupdate;  
/

存储过程从用户获取sal 和comm 并将其更新到emp 表中。

【问题讨论】:

标签: sql oracle stored-procedures jdbc procedure


【解决方案1】:

NVL() 接受两个参数,但我更喜欢 ANSI 标准 COALESCE():

UPDATE emp
    SET sal=sal + psal,
        comm = COALESCE(comm, 0) + COALESCE(pcomm, 0)
WHERE empno = peno;  

【讨论】:

    【解决方案2】:
     create or replace procedure Pupdate(   
    peno in emp.empno%type,  
    psal in emp.sal%type,  
    pcomm in emp.comm%type)  
    IS   
    BEGIN  
    UPDATE emp SET sal=sal+psal, comm=NVL(comm,0)+nvl(pcomm,0) WHERE empno=peno;  
    END Pupdate;  
    /
    

    试试这个。 NVL 类似于 NVL(column_name,value_if_null)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-02-10
      • 1970-01-01
      • 1970-01-01
      • 2018-02-14
      • 1970-01-01
      • 1970-01-01
      • 2020-03-28
      相关资源
      最近更新 更多