我有執行一個SQL查詢的問題,下面是我的存儲過程演員在SQL Server查詢
查詢
ALTER PROCEDURE ProcName
(
@iID VARCHAR(50),
@AccountID INT
)
AS
SET NOCOUNT ON
DECLARE @Sql VARCHAR(MAX)
SET @Sql = 'DELETE FROM ReferringPhysician WHERE iID IN(' + @iID + ') AND AccountID = '+ @AccountID + ''
EXEC (@Sql)
我試圖執行這個查詢,但它給了我錯誤因爲我正在使用exec()
,在這裏我在哪裏條件下我正在處理string
,而在另一種情況下我正在處理int
,所以在第二種情況下我得到了鑄造錯誤!我怎麼能通過這個?
任何幫助,非常感謝!
感謝
這看起來像這將是容易受到SQL注入式攻擊。您應該使用sp_executesql – 2013-04-22 15:56:30
@JoelCoehoorn yes,但不能將逗號分隔列表傳遞到sp_executesql,並根據需要正確解析它。 – 2013-04-22 16:04:49