【发布时间】:2021-07-22 12:46:06
【问题描述】:
我们正在编写一个存储过程,负责获取存储过程名称并返回包含存储过程列及其数据类型的结果。 但是,我们在执行动态查询以返回存储过程的结果时遇到了问题,但我们无法将其存储在临时表中!
您可以在下面看到我们的查询:
DECLARE @ProcName VARCHAR(100)='spGetOraganizationsList',
@ParamName VARCHAR(100),@DataType VARCHAR(20),
@Query NVARCHAR(MAX)='EXEC '+'spGetOraganizationsList '
SELECT PARAMETER_NAME,DATA_TYPE
INTO #Tmp
FROM information_schema.PARAMETERS
WHERE SPECIFIC_NAME=@ProcName
DECLARE ParamCursor CURSOR
FOR SELECT * FROM #Tmp
OPEN ParamCursor
FETCH NEXT FROM ParamCursor
INTO @ParamName,@DataType
WHILE @@FETCH_STATUS = 0
BEGIN
SET @Query=@Query+@ParamName+'=Null,'
FETCH NEXT FROM ParamCursor INTO @ParamName,@DataType
END
CLOSE ParamCursor
DEALLOCATE ParamCursor
DROP TABLE #Tmp
EXEC sp_executesql @Query
问题是我无法将它的结果存储在临时表中,
而OPENROWSET 不接受变量。
【问题讨论】:
-
无法将结果存储到临时表中是什么意思?你有错误吗?
-
我的意思是 EXEC sp_executesql @Query 的结果......你不能通过“查询”方法将它的结果存储到临时表中。
-
您能否发布脚本执行后遇到的确切错误。
-
你能编辑你的问题,指出失败的行,以及确切的错误信息
-
好的,现在您终于描述了您的问题。也许您应该尝试使用它:docs.microsoft.com/en-us/sql/relational-databases/…
标签: sql sql-server