mysql insert into exec_存储过程"Insert exec 语句不能嵌套"问题

今天碰到一个问题,存储过程嵌套:存储过程ProcC里嵌套ProcB,ProcB里嵌套ProcA,执行ProcC时就报错“INSERT EXEC 语句不能嵌套”;

下面这个方法可以解决问题:

CREATE PROCEDURE ProcA

AS

SELECT '123456'

GO

--执行成功

EXEC ProcA

CREATE PROCEDURE ProcB

AS

DECLARE @table TABLE(SN nvarchar(500))

INSERT INTO @table

EXEC ProcA

GO

--执行成功

EXEC ProcB

CREATE PROCEDURE ProcC

AS

DECLARE @table TABLE(SN nvarchar(500))

INSERT INTO @table

EXEC ProcB

GO

--执行失败  “INSERT EXEC 语句不能嵌套”

EXEC ProcC

******只需要把ProcC里的insert into @table  改写成 set  @Sql='INSERT INTO @table' 就解决了,如果还有存储过程ProcD嵌套ProcC,也只需要ProcD的insert

ALTER PROCEDURE ProcC

AS

DECLARE @table TABLE(SN nvarchar(500))

DECLARE  @Sql nvarchar(2000)

SET  @Sql='INSERT INTO @table'

EXEC ProcB

GO

--执行成功

EXEC ProcC

SET  @Sql='INSERT INTO @table'

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值