我正在尋找從多個表(MainTbl)中選擇,但它將基於哪個表將被拉出的結果集(StateTbl)。在SELECT FROM循環中傳遞變量
MainTables dbo.TABLE_MO
,dbo.TABLE_CA
,dbo.TABLE_AL
,dbo.TABLE_MI
只有尋找拉基於結果集StateTbl MO
,CA
,WA
Declare @Loop_Count int = 0
DECLARE @State varchar(2)
DECLARE @SQL varchar(max)
DECLARE db_cursor CURSOR FOR SELECT State FROM StateTbl
OPEN db_cursor
FETCH db_cursor INTO @State
WHILE (@@FETCH_STATUS = 0)
BEGIN
SET @SQL =
'
dbo.TABLE_'+ @State +'
'
EXEC(@SQL)
SET @Loop_Count = @Loop_Count + 1
FETCH db_cursor INTO @SQL
END
CLOSE db_cursor
DEALLOCATE db_cursor
'EXEC(@SQL)'應該如何從表中選擇? '@ SQL'將只包含表的名稱。你不應該做'SET @SQL ='SELECT * FROM dbo.TABLE _'+ @State +'''? –
可能重複:https://stackoverflow.com/questions/20054854/tsql-select-from-different-table-based-on-a-case-value –
你不需要爲此循環。 –