CREATE OR REPLACE PRO_TMP ( IN_SJLX IN VARCHAR2, IN_SJND IN NUMBER )
ASBEGIN
update t_ljys set sqje= sqsl * sqdj where sqdj>0 and sqsl>0 and sjnd= IN_SJND and sjlx=IN_SJLX;
COMMIT;
END PRO_TMP;update 语句在PLUS里执行没有问题,而在存储过程里不执行,是参数的问题吗?
错在哪?烦各位大虾指点迷津

解决方案 »

  1.   

    没看出来, sjnd= IN_SJND and sjlx=IN_SJLX参数类型匹配吗?
      

  2.   

    CREATE OR REPLACE PRO_TMP ( IN_SJLX IN VARCHAR2, IN_SJND IN NUMBER )
    ASBEGIN
    update t_ljys set sqje= sqsl * sqdj where sqdj>0 and sqsl>0 and sjnd= IN_SJND and sjlx=IN_SJLX;
    COMMIT;
    Dbms_output.Putline("OK");
    exception
        when others then
    Dbms_output.putline(sqlcode);
    END PRO_TMP;
      

  3.   

    sjnd= IN_SJND and sjlx=IN_SJLX 类型没有问题,过程编译没有问题,执行时也不提示出错
      

  4.   

    行号= 7 列号= 13 错误文本= PLS-00302: 必须说明 'PUTLINE' 组件
    行号= 7 列号= 1 错误文本= PL/SQL: Statement ignored
    行号= 10 列号= 13 错误文本= PLS-00302: 必须说明 'PUTLINE' 组件
    行号= 10 列号= 1 错误文本= PL/SQL: Statement ignored
      

  5.   

    CREATE OR REPLACE PRO_TMP ( IN_SJLX IN VARCHAR2, IN_SJND IN NUMBER )
    ASBEGIN
    update t_ljys set sqje= sqsl * sqdj where sqdj>0 and sqsl>0 and sjnd= IN_SJND and sjlx=IN_SJLX;
    COMMIT;
    Dbms_output.Put_line("OK");
    exception
        when others then
    Dbms_output.put_line(to_char(sqlcode));
    END PRO_TMP;