亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在動態SQL查詢中設置表名?

如何在動態SQL查詢中設置表名?

月關寶盒 2019-11-19 14:37:12
我想在動態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 SMALLINTDECLARE @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動態地使用參數,但是我做不到。請指導我。
查看完整描述

3 回答

?
慕哥6287543

TA貢獻1831條經驗 獲得超10個贊

表名不能作為參數提供,因此您必須像這樣手動構建SQL字符串:


SET @SQLQuery = 'SELECT * FROM ' + @TableName + ' WHERE EmployeeID = @EmpID' 

但是,請確保您的應用程序不允許用戶直接輸入的值@TableName,因為這會使您的查詢容易受到SQL注入的影響。有關此問題的一種可能的解決方案


查看完整回答
反對 回復 2019-11-19
?
眼眸繁星

TA貢獻1873條經驗 獲得超9個贊

為了防止SQL注入,我通常嘗試盡可能使用函數。在這種情況下,您可以執行以下操作:


...

SET @TableName = '<[db].><[schema].>tblEmployees'

SET @TableID   = OBJECT_ID(TableName) --won't resolve if malformed/injected.

...

SET @SQLQuery = 'SELECT * FROM ' + OBJECT_NAME(@TableID) + ' WHERE EmployeeID = @EmpID' 



查看完整回答
反對 回復 2019-11-19
?
嗶嗶one

TA貢獻1854條經驗 獲得超8個贊

嘗試這個:


/* Variable Declaration */

DECLARE @EmpID AS SMALLINT

DECLARE @SQLQuery AS NVARCHAR(500)

DECLARE @ParameterDefinition AS NVARCHAR(100)

DECLARE @TableName AS NVARCHAR(100)

/* set the parameter value */

SET @EmpID = 1001

SET @TableName = 'tblEmployees'

/* Build Transact-SQL String by including the parameter */

SET @SQLQuery = 'SELECT * FROM ' + @TableName + ' WHERE EmployeeID = @EmpID' 

/* Specify Parameter Format */

SET @ParameterDefinition =  '@EmpID SMALLINT'

/* Execute Transact-SQL String */

EXECUTE sp_executesql @SQLQuery, @ParameterDefinition, @EmpID


查看完整回答
反對 回復 2019-11-19
  • 3 回答
  • 0 關注
  • 1051 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號