【发布时间】:2010-03-24 19:55:55
【问题描述】:
我有 2 个存储过程 usp_SP1 和 usp_SP2。他们都使用插入到#tt exec sp_somesp。我想创建一个第三个存储过程,它将决定调用哪个存储过程。比如:
create proc usp_Decision
(
@value int
)
as
begin
if (@value = 1)
exec usp_SP1 -- this proc already has insert into #tt exec usp_somestoredproc
else
exec usp_SP2 -- this proc too has insert into #tt exec usp_somestoredproc
end
后来,我意识到我需要为来自 usp_Decision 的返回值定义一些结构,以便我可以填充 SSRS 数据集字段。所以这是我尝试过的:
在 usp_Decision 中创建了一个临时表并尝试执行“插入 #tt exec usp_SP1”。这没有成功。错误“插入 exec 不能嵌套”
在 usp_Decision 中尝试将表变量传递给每个存储过程并更新存储过程中的表并执行“select * from”。那也没有成功。作为参数传递的表变量不能在存储过程中修改。
请建议可以做什么。
【问题讨论】:
-
INSERT EXEC 的缺陷是我对 SQL Server 最大的不满之一。请投票! connect.microsoft.com/SQLServer/feedback/details/294571/…
标签: sql-server tsql sql-server-2008 stored-procedures