【发布时间】:2017-10-18 11:25:51
【问题描述】:
不重复。这里的问题是它有不同的结构。我对我能改变什么和不能改变什么有一些限制。这里我有确切的例子,其他票没有。 OPENROWSET 也不能应用,因为 test1 循环遍历所有数据库(using EXEC sp_MSforeachdb @sql)。我不能使用它,因为在 OPENROWSET 中你必须指定你从哪个数据库运行程序
假设我有这两个 SP:
create procedure test1
@ProcName varchar(155)
as
begin
if OBJECT_ID('tempdb..#testt') is not null drop table #testt
create table #testt1(a int, b int)
insert #testt1
exec @ProcName
select * from #testt1
end
create procedure test2
as
begin
declare @sql varchar(155)
if OBJECT_ID('tempdb..#testt2') is not null drop table #testt2
create table #testt2(a int, b int)
select @sql = 'select 1 as a,2 as b'
insert #testt2
exec (@sql)
select * from #testt2
end
当我运行exec test1 @ProcName = 'Test2' 时,它返回错误:
INSERT EXEC 语句不能嵌套。
这里的问题是我不能停止在test2 中使用insert exec。并且 test1 应该将 @ProcName 作为变量
解决这个问题最轻松的方法是什么?
【问题讨论】:
-
@JacobH,不重复。这里的问题是它有不同的结构。我对我能改变什么和不能改变什么有一些限制。这里我有确切的例子,其他票没有
-
每个问题都有不同的结构。您是否尝试过使用我发布的链接中推荐的 OPENROWSET?
-
@JacobH,无法应用。更新票证的原因
-
删除了粗体,因为它听起来像是在喊叫
标签: sql sql-server tsql sql-server-2012