我有一个动态查询,我调用它并将结果集放入变量表中
INSERT INTO @outTable
EXEC sp_executesql @query;
问题是 @outTable
应该更改在 @query
中添加列时 - @query
是另一个存储过程。
我尝试使用 CTE (WITH
),但它不适用于 EXEC
。
这可以在 T-SQL 中实现吗?
类似这样的事情
DECLARE @outTable TABLE (
ID int,
Record_ID int,
Order_ID nchar(16),
...and around 30 columns
);
SET @query = N'EXEC [OrderDep].[Order_Find] @FreeWhere =N'' WHERE '+ @Where +'''';
BEGIN TRY
INSERT INTO @outTable
EXEC sp_executesql @query;
END TRY
BEGIN CATCH
最佳答案
使用 insert ... exec ...
时,表定义必须与存储过程的输出匹配。
由于您正在创建 @query
语句,因此您可能知道它将返回什么。这可能需要大量工作,但您必须手动调整表定义。
关于sql-server - 具有动态查询的 CTE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2426206/