gpt4 book ai didi

sql - 如何执行 CTE 中生成的查询

转载 作者:行者123 更新时间:2023-12-02 23:22:17 24 4
gpt4 key购买 nike

我有一个生成 SELECT 语句的 CTE,但 SQL Server (2012) 不允许对其调用 EXEC。这是查询:

DECLARE @guidToFind uniqueidentifier = 'E4069560-091A-4026-B519-104F1C7693B3';

WITH GuidCols (TableName, ColName, Query) As
(
SELECT
C.TABLE_NAME,
C.COLUMN_NAME,
'SELECT ' +
QUOTENAME(C.TABLE_NAME) + '.' +
QUOTENAME(C.COLUMN_NAME) + '
FROM ' +
QUOTENAME(C.TABLE_NAME) + '
WHERE ' +
QUOTENAME(C.COLUMN_NAME) + ' = ''' + cast(@guidToFind AS VARCHAR(50))+
''''
FROM
INFORMATION_SCHEMA.COLUMNS C
INNER JOIN INFORMATION_SCHEMA.TABLES T
ON C.TABLE_NAME = T.TABLE_NAME AND
T.TABLE_TYPE = 'BASE TABLE'
WHERE
C.DATA_TYPE = 'uniqueidentifier'
)
-- SELECT * FROM
EXEC( GuidCols.Query )

如果取消 CTE 后面的 SELECT 语句的注释,问题并没有解决。

此查询的目的是查找数据库中 GUID 的所有实例。目前我正在使用类似 this 的脚本解决这个问题。不过,我更乐意使用集合操作和其他技术来解决这个问题,而无需迭代行。

最佳答案

您不能将 exec 用作 CTE 的一部分。

来自WITH common_table_expression (Transact-SQL)

A CTE must be followed by a single SELECT, INSERT, UPDATE, or DELETE statement that references some or all the CTE columns.

您可以做的是将查询结果存储在临时表中,循环遍历行并一次执行一个语句。

关于sql - 如何执行 CTE 中生成的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11661439/

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