【发布时间】:2015-07-23 02:18:19
【问题描述】:
这是我的问题.. 但我会举个例子让它更简单
我有一个名为 usp_Replace 的存储过程。此 sp 将用空格替换引号。 这是未将其设置为查询字符串的原始查询..
CREATE PROCEDURE usp_Replace
@desc varchar(50)
AS
BEGIN
SET NOCOUNT ON;
SELECT '' + Replace(REPLACE(REPLACE(@desc, CHAR(13), ''), CHAR(10), ''),'"','') + ''
END
但是.. 我想将 select 语句设置为查询字符串,因为出于某种原因,我将不得不使用条件语句,但不会显示它,因为它不是问题的一部分。
这里..
ALTER PROCEDURE usp_Replace
@desc varchar(50)
AS
BEGIN
SET NOCOUNT ON;
DECLARE @query nvarchar(max)
DECLARE @condition nvarchar(max)
SET @condition = null
SET @query = ' SELECT '' + Replace(REPLACE(REPLACE('''+@desc+''', CHAR(13), ''), CHAR(10), ''),''"'','') + '' '
SET @query = @query + ISNULL(@condition,'')
EXEC sp_executesql @query
END
我在这方面遇到了错误,导致有未闭合的引号。 我真的不知道如何以及在何处放置单引号。
如果您遇到此问题或任何链接/建议,请提供帮助。我会很高兴了解它。谢谢。
【问题讨论】:
-
当您应该只使用参数化查询时,这似乎是修复 sql 注入问题的错误尝试。
标签: mysql sql str-replace