过程如下:
CREATE OR REPLACE PROCEDURE
SJ_CKSYS_EMP_OUT(TREV IN VARCHAR2, TRES OUT VARCHAR2, TEMPID OUT VARCHAR2) IS
C_EMP VARCHAR2(25);
BEGIN
   SELECT EMP_ID INTO TEMPID FROM SAJET.SYS_EMP
      WHERE EMP_NO = TREV AND ENABLED = 'Y' AND ROWNUM = 1;
   TRES:='OK';
EXCEPTION
   WHEN OTHERS THEN
      TRES:='EMP ERR';
END;
我的调用方法是execute SJ_CKSYS_EMP_OUT('36204'),但是报错了,正确的方法应该是怎样的,我是在toad中执行的

解决方案 »

  1.   

    你这个procedure是输入一个参数,输出两个值。
    你调用的时候需要dbms_output.put_line一下,来输出这两个值。
    DECLARE
    l_tres varchar2(20);
    l_tempid varchar2(20);
     PROCEDURE
    SJ_CKSYS_EMP_OUT(TREV IN VARCHAR2, TRES OUT VARCHAR2, TEMPID OUT VARCHAR2) IS
    C_EMP VARCHAR2(25);
    BEGIN
       SELECT 1 INTO TEMPID 
       FROM dual;
       TRES:='OK';
    EXCEPTION
       WHEN OTHERS THEN
          TRES:='EMP ERR';
    END;
    BEGIN
    SJ_CKSYS_EMP_OUT('aa',l_tres,l_tempid);
    dbms_output.put_line(l_tres||','||l_tempid);
    END;因为没有你这个表,我改了一下,你自己改改!
      

  2.   

    你用什么变量来保存返回的值呢?  TRES OUT VARCHAR2, TEMPID OUT VARCHAR2参数个数或类型不匹配.
      

  3.   

    没这么复杂
    DECLARE
    BEGIN
    SJ_CKSYS_EMP_OUT('aa',l_tres,l_tempid);
    dbms_output.put_line(l_tres||','||l_tempid);
    END;就OK了,因为我没权限建procedure,所以才写在了里面。。