-1

我已经编写了简单的存储过程并使用 sp_executesql 执行以解决引号错误和 sql 注入,但是当我在参数中传递单引号时它仍然显示我Unclosed quotation mark after the character string ''.

alter procedure dbo.quote_test
(
    @quoteid int
)
as
begin
declare @sqlstring as nvarchar(max)
declare @paramdef as nvarchar(100)
set @sqlstring = 'select * from quote where quote_id = @quoteid';
set @paramdef = N'@quoteid int';
exec sp_executesql @sqlstring,@paramdef, @quoteid
end

exec dbo.quote_test 10'
4

2 回答 2

0

我不确定您要完成什么,但存储过程需要一个整数作为参数。因此,这将起作用:

exec dbo.quote_test 10

这不应该工作:

exec dbo.quote_test 'abc'
于 2014-05-16T03:01:44.303 回答
0

可能是由于您的 EXEC 语句有报价。

执行 dbo.quote_test 10'

于 2014-05-16T03:02:34.010 回答