Динамический запрос не работает вместе с переменной - PullRequest
0 голосов
/ 20 января 2012
declare  @SQL  varchar(2000)
declare @Total int 

SET @SQL = 'Select'+@Total+'= SUM(isnull(Points,0)) as Pointsvalue  From  Offer'

exec(@SQL)  

select @Total

Я пытаюсь сделать так, но всегда результат показывает меня пустым.Но когда я запускаю запрос напрямую, он дает результат 120

Где я иду не так?Пожалуйста, дайте мне знать

Спасибо

принц

Ответы [ 2 ]

5 голосов
/ 20 января 2012

Если вы хотите запустить это как динамический запрос, попробуйте так:

declare @SQL nvarchar(2000), @Total int 

SET @SQL = N'Select @Total = SUM(isnull(Points,0)) as Pointsvalue  From  Offer'
exec sp_executesql @SQL, N'@Total int output', @Total = @Total output

select @Total

(см. sp_executesql (Transact-SQL) )

Однако,похоже, у вас там нет действительно динамического запроса.
Итак, как указал msmucker0527, вы можете просто выполнить:

declare @Total int 

Select @Total = SUM(isnull(Points,0)) as Pointsvalue  From  Offer

select @Total
1 голос
/ 20 января 2012

То, что вы пытались сделать, это (я думаю)

SET @SQL = 'Select @Total = SUM(isnull(Points,0)) as Pointsvalue  From  Offer'

Однако это скажет вам, потому что @Total находится вне области действия (у запроса в Exec есть свой собственный)

Там снова вам не нужно выполнять exec, если вы хотите выше ...

Так что я немного запутался в том, чего вы пытались достичь

Подсказка

Когда вы пишете запрос, используя exec (String). Закомментируйте exec и замените его Print @SQL, посмотрите, что он попытается сделать.

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