oracle 存储过程中调用存储过程

A,较sql server中区别 : 
1,无exec
2,无output
3,添加()
B,oracle存储过程的入参
1,纯输入参数可以引用其值,但不可以赋值
 解决:建立本地参数暂存其数据,然后操作本地参数
2,输出参数可赋值,可引用

CREATE OR REPLACE PROCEDURE P_AM_WOSORD_SET_LOG(
    AS_USERID    VARCHAR2,
    AS_WLDM      VARCHAR2,
    AS_FUNC      VARCHAR2,
    AS_LX        VARCHAR2,
    AS_HM        VARCHAR2,
    AS_NR        VARCHAR2,
    AN_ERRORCODE OUT NUMBER,
    AS_ERRORMSG  OUT VARCHAR2
) As 
BEGIN
    AN_ERRORCODE := 0;
    AS_ERRORMSG  := NULL; 
    BEGIN
        INSERT INTO T02
            (GDCZHM, GDRZLX, GDRZRQ, GDRZRY, GDRZNR)
        VALUES
            (AS_HM, AS_LX, SYSDATE, AS_USERID, AS_NR);
    END;
END;

CREATE OR REPLACE PROCEDURE P_AM_WOSORD_ORDER_REVOKE
(
	AS_USERID    VARCHAR2,
	AS_WLDM      VARCHAR2,
	AS_FUNC      VARCHAR2,
	AS_GDCZHM    VARCHAR2,
	AS_MBZBDM    VARCHAR2,
	AN_ERRORCODE OUT NUMBER,
	AS_ERRORMSG  OUT VARCHAR2
) As 
BEGIN
	AN_ERRORCODE := 0;
	AS_ERRORMSG  := NULL; 
	BEGIN
		AN_ERRORCODE := -1;
		AS_ERRORMSG  := '工单打回失败';
		P_AM_WOSORD_SET_LOG(AS_USERID,
				    AS_WLDM,
				    AS_FUNC,
				    '30',
				    AS_GDCZHM,
			            LS_LOG,
			            AN_ERRORCODE,
			            AS_ERRORMSG);
           --sqlserver中引用存储过程
              --EXEC p_am_wosord_set_log @as_userid,@as_wldm,@as_func,
              --      '10',@as_new_gdczhm,@ls_nr,@an_errorcode OUTPUT,@as_errormsg OUTPUT ;
               IF AN_ERRORCODE <> 0 THEN
			BEGIN
				RETURN;
			END;
		END IF;
	
		AN_ERRORCODE := 0;
		AS_ERRORMSG  := NULL;
	EXCEPTION
		WHEN OTHERS THEN
			AN_ERRORCODE := -1;
			IF LENGTH(NVL(AS_ERRORMSG, NULL)) = 0 THEN
				BEGIN
					AS_ERRORMSG := SQLERRM;
				END;
			END IF;
			AS_ERRORMSG := LS_STORENAME || ':' || AS_ERRORMSG;
			RAISE_APPLICATION_ERROR(-20001, AS_ERRORMSG);
	END;
END;


 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值