CREATE OR REPLACE 
PROCEDURE AddNewTuiFei
(
 n_id   T_MZTFSQ_JOB.id%TYPE,               --唯一标识ID
 n_mzh T_MZTFSQ_JOB.F_MZH%TYPE,         --门诊号
 n_jzkh  T_MZTFSQ_JOB.F_JZKH%TYPE,      --就诊卡号
 n_hzxm T_MZTFSQ_JOB.F_HZXM%TYPE,      --患者姓名
 n_tfyy T_MZTFSQ_JOB.F_TFYY%TYPE,      --退费原因
 n_tfyp T_MZTFSQ_JOB.F_TFYP%TYPE,      --退费药品/检查
 n_applydate T_MZTFSQ_JOB.F_APPLYDATE%TYPE, --申请发起时间
 n_mzlsh T_MZTFSQ_JOB.F_MZLSH%TYPE,      --门诊流水号
 n_totalprice T_MZTFSQ_JOB.F_TOTALPRICE%TYPE, --退费总价
 n_createtime T_MZTFSQ_JOB.CREATE_TIME %TYPE,      --创建时间
 n_issend T_MZTFSQ_JOB.IS_SEND%TYPE    --是否发送(默认为空,用作OA轮询判断)
)
AS
BEGIN
 --向表中插入数据
 INSERT INTO T_MZTFSQ_JOB(id,F_MZH,F_JZKH,F_HZXM,F_TFYY,F_TFYP,F_APPLYDATE,F_MZLSH,F_TOTALPRICE,CREATE_TIME,IS_SEND)
  VALUES(n_id,n_mzh,n_jzkh,n_hzxm,n_tfyy,n_tfyp,n_applydate,n_mzlsh,n_totalprice,n_createtime,n_issend);
 EXCEPTION   
      WHEN OTHERS Then  
     DBMS_OUTPUT.PUT_LINE('存储失败');  
     Rollback;  
  COMMIT;
END AddNewTuiFei;因为这个存储过程是给别的系统提供的,现在要让对方看是否执行成功,怎么添加一个返回值来判断?

解决方案 »

  1.   

    PROCEDURE AddNewTuiFe(o_res out number)
      

  2.   

    CREATE OR REPLACE 
    PROCEDURE AddNewTuiFei
    (
     n_id   T_MZTFSQ_JOB.id%TYPE,               --唯一标识ID
     n_mzh T_MZTFSQ_JOB.F_MZH%TYPE,         --门诊号
     n_jzkh  T_MZTFSQ_JOB.F_JZKH%TYPE,      --就诊卡号
     n_hzxm T_MZTFSQ_JOB.F_HZXM%TYPE,      --患者姓名
     n_tfyy T_MZTFSQ_JOB.F_TFYY%TYPE,      --退费原因
     n_tfyp T_MZTFSQ_JOB.F_TFYP%TYPE,      --退费药品/检查
     n_applydate T_MZTFSQ_JOB.F_APPLYDATE%TYPE, --申请发起时间
     n_mzlsh T_MZTFSQ_JOB.F_MZLSH%TYPE,      --门诊流水号
     n_totalprice T_MZTFSQ_JOB.F_TOTALPRICE%TYPE, --退费总价
     n_createtime T_MZTFSQ_JOB.CREATE_TIME %TYPE,      --创建时间
     n_issend T_MZTFSQ_JOB.IS_SEND%TYPE,    --是否发送(默认为空,用作OA轮询判断)
     ret_code  out varchar2(1),
     ret_desc out varchar2(100)
    )
    AS
    BEGIN
     --向表中插入数据
     INSERT INTO T_MZTFSQ_JOB(id,F_MZH,F_JZKH,F_HZXM,F_TFYY,F_TFYP,F_APPLYDATE,F_MZLSH,F_TOTALPRICE,CREATE_TIME,IS_SEND)
      VALUES(n_id,n_mzh,n_jzkh,n_hzxm,n_tfyy,n_tfyp,n_applydate,n_mzlsh,n_totalprice,n_createtime,n_issend);
     EXCEPTION   
       WHEN OTHERS Then  
       ret_code := 0;
         DBMS_OUTPUT.PUT_LINE('存储失败');  
         Rollback;  
      COMMIT;
    END AddNewTuiFei;改成这样会报错
      

  3.   


    你那个ret_code和out之间的空格是全角字符改成半角就行了。
      

  4.   

    CREATE OR REPLACE 
    PROCEDURE AddNewTuiFei(In_Data IN VARCHAR2,         -- 传入数据
                           Out_Errorcd OUT VARCHAR2,    -- 提示码
                           Out_Errortx OUT VARCHAR2     -- 提示信息
                            ) IS n_id   T_MZTFSQ_JOB.id%TYPE,               --唯一标识ID
     n_mzh T_MZTFSQ_JOB.F_MZH%TYPE,         --门诊号
     n_jzkh  T_MZTFSQ_JOB.F_JZKH%TYPE,      --就诊卡号
     n_hzxm T_MZTFSQ_JOB.F_HZXM%TYPE,      --患者姓名
     n_tfyy T_MZTFSQ_JOB.F_TFYY%TYPE,      --退费原因
     n_tfyp T_MZTFSQ_JOB.F_TFYP%TYPE,      --退费药品/检查
     n_applydate T_MZTFSQ_JOB.F_APPLYDATE%TYPE, --申请发起时间
     n_mzlsh T_MZTFSQ_JOB.F_MZLSH%TYPE,      --门诊流水号
     n_totalprice T_MZTFSQ_JOB.F_TOTALPRICE%TYPE, --退费总价
     n_createtime T_MZTFSQ_JOB.CREATE_TIME %TYPE,      --创建时间
     n_issend T_MZTFSQ_JOB.IS_SEND%TYPE    --是否发送(默认为空,用作OA轮询判断)BEGIN
     --向表中插入数据
     INSERT INTO T_MZTFSQ_JOB(id,F_MZH,F_JZKH,F_HZXM,F_TFYY,F_TFYP,F_APPLYDATE,F_MZLSH,F_TOTALPRICE,CREATE_TIME,IS_SEND)
      VALUES(n_id,n_mzh,n_jzkh,n_hzxm,n_tfyy,n_tfyp,n_applydate,n_mzlsh,n_totalprice,n_createtime,n_issend);
      Out_Errorcd := 'SUCC';
      Out_Errortx := '存储成功';
     EXCEPTION   
          WHEN OTHERS Then  
         DBMS_OUTPUT.PUT_LINE('存储失败');  
         Rollback;  
         Out_Errorcd := 'FAIL';
         Out_Errortx := '存储失败';
      COMMIT;
    END AddNewTuiFei;