sql-server - 具有动态查询的 CTE

标签 sql-server t-sql

我有一个动态查询,我调用它并将结果集放入变量表中

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/

相关文章:

sql-server - SQL Server : Number of disk blocks used by index or table

sql - MYSQL中DBCC INPUTBUFFER(@@SPID)(为当前连接或指定连接提供sql语句)的等效语句是什么?

t-sql - 当最后一位有效数字为 5 时,四舍五入小数点

sql - 删除自连接中的重复关系

sql-server - 查找 SQL Server 表子集中前一个值和后一个值之间的值

php - SQL search 查询匹配数组至少一半的关键字

sql-server - SQL 服务器 : how to split string to columns and rows with 2 delimiters?

sql-server - 如何查找单个存储过程中是否存在表名列表?

sql-server - 使用 QSqlQuery 检索 SCOPE_IDENTITY()

sql - 在SQL INSERT SELECT Query中添加一个递增的数列