Хранимая процедура SQL Server - PullRequest
1 голос
/ 18 августа 2011

Я хочу, чтобы он подсчитывал, тогда if @intcount > 0 он должен показывать данные, иначе данные не будут найдены, но когда я выполняю его, он выдает «данные не найдены» независимо от того, что я делаю неправильно?

Ответы [ 3 ]

3 голосов
/ 18 августа 2011

Вам нужно:

EXEC sp_executesql @sqlstr, N'@intCount INT OUTPUT', @intCount = @intCount OUTPUT;

IF (@intCount > 0)
BEGIN
    ....
END

Вам также нужно будет сделать @sqlstr NVARCHAR(2000) и добавить значение N'SELECT ...', в отличие от 'SELECT ...' - этот ведущий N может быть важен.

1 голос
/ 18 августа 2011

Проблема:

declare @intCount int
set @intCount = 0
...
<a bunch of code where @intcount doesn't change>
If (@intCount > 0)

Всегда будет 0.

0 голосов
/ 18 августа 2011

Ваш вопрос относится к области.Команда EXEC (@sqlstr) не имеет доступа к переменной @intcount в вашей хранимой процедуре.Я бы поспорил, если вы запустите этот код в окне запроса, он скажет вам объявить @ intcount.

Прослушайте YUCK и перепишите это, чтобы избежать динамического SQL, и тогда ваш SELECT сможет установить @Переменная intcount.

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