我有执行一个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