sp_executesql给出未闭合的引号错误?

时间:2014-05-16 02:58:40

标签: sql sql-server sql-server-2008 sp-executesql

我编写了简单的存储过程并使用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'

2 个答案:

答案 0 :(得分:0)

我不确定您要完成什么,但存储过程采用整数作为参数。所以,这将有效:

exec dbo.quote_test 10

这应该不起作用:

exec dbo.quote_test 'abc'

答案 1 :(得分:0)

可能是由于你的EXEC声明有引用。

exec dbo.quote_test 10'