我正在 SQL Server 2005 中编写一个存储过程,在给定点我需要执行另一个存储过程。这个调用是动态的,所以我像往常一样使用了 sp_executesql 命令:
DECLARE @DBName varchar(255)
DECLARE @q varchar(max)
DECLARE @tempTable table(myParam1 int, -- other params)
SET @DBName = 'my_db_name'
SET q = 'insert into @tempTable exec ['+@DBName+'].[dbo].[my_procedure]'
EXEC sp_executesql @q, '@tempTable table OUTPUT', @tempTable OUTPUT
SELECT * FROM @tempTable
但我得到这个错误:
必须声明标量变量“@tempTable”。
如您所见,该变量已声明。我已经阅读了文档,似乎只允许使用 text、ntext 和 image 参数。我怎样才能拥有我需要的东西?
PS:我发现了许多关于 2008 年和更高版本的提示,包括 2005 年的任何提示。