我想在SQL/PDW中的while循環內執行動態查詢。此查詢將給我最大/最小日期以及Fact表中日期的不同計數。我需要爲我的數據庫中的所有模式執行此操作(所有模式具有相同的表結構)。在SQL循環中執行動態查詢
DECLARE @intCNT INT
SET @intCNT = 1
DECLARE @strSQL1 VARCHAR(1000)
DECLARE @strSQL2 VARCHAR(1000)
DECLARE @strSQL3 VARCHAR(100)
SET @strSQL1 = 'SELECT MAX(FT_DT) AS MAX_DT,
MIN(FT_DT) AS MIN_DT,
COUNT(DISTINCT FT_DT) AS DT_CNT
FROM '
SET @strSQL2 = CONCAT('(SELECT TABLE_SCHEMA
FROM
(SELECT ROW_NUMBER() OVER(ORDER BY TABLE_SCHEMA) AS ROW_NUM,
TABLE_SCHEMA
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME = ''FT_TBL''
AND TABLE_SCHEMA LIKE ''F%'')T
WHERE ROW_NUM = ',@intCNT,')')
SET @strSQL3 = '.FT_TBL'
EXEC (@strSQL1 + @strSQL2 + @strSQL3)
當我執行,我得到以下錯誤:
Msg 102, Level 15, State 1, Line 11
Incorrect syntax near '.'.
是否是與語法,我想執行的查詢下面給出?我想讓我的PDW實例工作。我在SQL Server中嘗試過,但得到了同樣的錯誤
不知道你是用第三部分做什麼,你需要執行strSQL2,然後將其作爲表名添加到strSQL1,這會使查詢成爲select * from「從子查詢結果生成的名稱」。 –
使用動態sql的一個重要工具是PRINT語句。打印你正在嘗試執行的sql字符串,通常語法錯誤是顯而易見的。 –
我需要的是「select ---- from .FT_TBL」,適用於所有模式。我需要在執行結束時將完整的結果集保存在表中。 –