gpt4 book ai didi

sql - 如何在不创建表的情况下将动态查询的结果存储在临时表中?

转载 作者:行者123 更新时间:2023-12-02 13:38:14 24 4
gpt4 key购买 nike

我们正在编写一个存储过程,负责获取存储过程名称并返回包含存储过程列及其数据类型的结果。但是,我们在执行动态查询以返回存储过程的结果时遇到了问题,但我们无法将其存储在临时表中!

您可以在下面看到我们的查询:

  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 不接受变量。

最佳答案

我认为它来自sql概念,它不信任存储过程的结果,因此我们无法通过“在查询表中创建”方法对其进行选择或将其存储在表中。除非您创建一个表并定义它的列和 sql 信任您并将其结果插入到该表中,例如以下情况

Create table test (name varchar(10),family varchar(20))


Insert into test
Exec sp-testResult

现在,如果您为表定义了错误的列,您将收到查询运行时错误。实际上,sql 不会预测 sp 的结果,而是由您来定义存储过程的结果。

关于sql - 如何在不创建表的情况下将动态查询的结果存储在临时表中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56311952/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com