[英]How to set a variable to the result of a sql query with a variable as a table name in SQL 2005
我目前在編寫存儲過程以及將int類型的變量的值設置為帶有變量作為表名的select語句的結果時遇到麻煩。 我查看了舊線程並嘗試了多種方法,但是沒有運氣。 如果沒有關於表名的錯誤,我最終會因為變量轉換問題而出錯。 我已經為此工作了很長時間,我們將不勝感激。 以下是我的代碼的一部分。 謝謝
DECLARE @BATCHNUMBER VARCHAR --value set in earlier code
DECLARE @ETABLE VARCHAR(50); --the table name
DECLARE @FIRSTDOCID INT;
SET @ETABLE = 'tablename_' + @BATCHNUMBER; --CREATE FIRST TABLE NAME
SELECT @FIRSTDOCID = MIN(D0CID) FROM @ETABLE
我得到的錯誤是:必須聲明表變量“ @ETABLE”
您正在嘗試從VARCHAR
而不是表中進行選擇。 進行此工作的唯一方法是使用動態SQL。
DECLARE @SQL NVARCHAR(250);
SET @SQL = 'SELECT @OUTPUT = MIN(D0CID) FROM ' + QuoteName(@ETABLE);
EXEC sp_executeSql @SQL, N'@output INT OUTPUT', @FIRSTDOCID OUTPUT;
SELECT @FIRSTDOCID;
但是,我不建議使用動態SQL,因為這通常會導致SQL注入。
如果要動態構建查詢,則可能必須執行use exec
之類的操作:
SET @QUERY = "SELECT" + ...etc.
exec(@QUERY)
由於ETABLE
是varchar,而不是預期的“表變量”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.