Написание простого SQL Server 2005 динамического SQL - PullRequest
2 голосов
/ 29 июня 2010

Я пишу довольно простой запрос SQL в SQL 2005, но сталкиваюсь с проблемой и не могу понять, что не так.

Для целей документации запрос должен быть динамическим sql

Фрагмент моего запроса:

@RecCreatorID int
....
....
IF (@RRecCreatorID IS NOT NULL)
    Begin
        Set @strSQL = @strSQL + ' AND RecCreatorID = @RecCreatorID'
    End

Однако, когда я запускаю PRINT @strSQL, я получаю

и RecCreatorID = @ RecCreatorID

Как получить действительное значение @RecCreatorID для отображения?

Ответы [ 2 ]

3 голосов
/ 29 июня 2010
@RecCreatorID int
....
....
IF (@RRecCreatorID IS NOT NULL)
    Begin
        Set @strSQL = @strSQL + ' AND RecCreatorID =' +  cast(@RecCreatorID as varchar(50))
    End

другое решение - использовать sp_executesql для выполнения запроса

2 голосов
/ 29 июня 2010

Использовать sp_executesql. Эта хранимая процедура будет принимать параметры, которые вы затем сможете использовать внутри своего динамического SQL (подстановка параметров). Например:

Set @strSQL = @strSQL + ' AND RecCreatorID = @RecCreatorID_PARAM'


exec sp_executesql @SQL,
N'@RecCreatorID_PARAM int',
@RecCreatorID_PARAM = @RecCreatorID

Хотя это не так много для отображения, это все же лучший способ обработки динамического SQL, чем конкатенация, imho.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...