私は、ストアド プロシージャを次のように変更する任務を負っています。
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
何らかの理由で、ステートメントの最初のセットは正常に機能します。2番目はそうではありません。次のエラー メッセージが表示されます。Syntax error near '"' in the full-text search condition '"*00000000'.
@ID
2 番目のステートメント セットから 4 文字を削除しても機能します。@ID
明らかに、どちらかまたは列の長さと関係がありますが、何がわかりID
ません。