我想在動態SQL查詢中設置表名。我成功地嘗試了參數如下:如何在動態SQL查詢中設置表名?
/* Using sp_executesql */
/* Build and Execute a Transact-SQL String with a single parameter
value Using sp_executesql Command */
/* Variable Declaration */
DECLARE @EmpID AS SMALLINT
DECLARE @SQLQuery AS NVARCHAR(500)
DECLARE @ParameterDefinition AS NVARCHAR(100)
/* set the parameter value */
SET @EmpID = 1001
/* Build Transact-SQL String by including the parameter */
SET @SQLQuery = 'SELECT * FROM tblEmployees WHERE EmployeeID = @EmpID'
/* Specify Parameter Format */
SET @ParameterDefinition = '@EmpID SMALLINT'
/* Execute Transact-SQL String */
EXECUTE sp_executesql @SQLQuery, @ParameterDefinition, @EmpID
現在我要動態地使用參數採取TABLE NAME
但我沒能做到這一點。請指導我。
你不能參數化表名。您只需在SET @ SQLQuery步驟手動執行。 – MatBailie
@MatBailie @MatBailie實際上你可以使用它作爲字符串並使用字符串名稱的exec(它的行爲完全像一個過程) – HellBaby
@hellbaby - 仍然不能提供表名作爲*參數* 'sp_executesql',這隻能通過替換字符串來完成。這些非常不同。參數化允許進行類型檢查,防止SQL注入攻擊,執行計劃重用等等。將字符串替換爲其他字符串並不會造成任何影響,因此是* not * parameterisation。 – MatBailie