【发布时间】:2013-02-28 20:12:45
【问题描述】:
我的任务是修改一个存储过程,使其看起来像这样:
DECLARE @ID nvarchar(10)
SET @ID = '0000000001'
DECLARE @SQL nvarchar(200)
SET @SQL = 'SELECT AppN FROM Apps WHERE CONTAINS(ID, ''"*'' + @ID + ''*"'')'
EXECUTE SP_EXECUTESQL @SQL
使用 SP_EXECUTESQL 的参数列表而不是字符串连接。问题是以下似乎不起作用:
DECLARE @CID nvarchar(10)
SET @CID = '0000000001'
DECLARE @ID2 nvarchar(14)
SET @ID2 = '"*' + @ID + '*"'
DECLARE @SQL nvarchar(200)
SET @SQL = 'SELECT AppN FROM Apps WHERE CONTAINS(ID, ID2)'
DECLARE @ParamDefinition NCHAR(300)
SET @ParamDefinition = '@ID2 nvarchar(10)'
EXECUTE SP_EXECUTESQL @SQL, @ParamDefinition, @ID2
无论出于何种原因,第一组语句都可以正常工作。第二个没有。我收到以下错误消息:Syntax error near '"' in the full-text search condition '"*00000000'.
如果我从 @ID 中删除 4 个字符,则第二组语句也有效。显然它与@ID 或ID 列的长度有关,但我不知道是什么。
【问题讨论】:
标签: sql sql-server sp-executesql