SQL Server - проверить результат хранимой процедуры - PullRequest
2 голосов
/ 31 мая 2010

В SQL Server можно проверить результат хранимой процедуры, чтобы узнать, возвращает ли результат строки или ничего?

Пример:

EXEC _sp_MySp 1, 2, 3

IF @@ROWCOUNT = 0
BEGIN
    PRINT('Empty')
END
ELSE
BEGIN
    PRINT(@@ROWCOUNT)
END

Но @@ ROWCOUNT всегдавернуть 0, так что, может быть, есть другой способ сделать это?

Ответы [ 2 ]

3 голосов
/ 31 мая 2010

Вам нужно будет вставить результаты в таблицу или переменную таблицы:

DECLARE @t TABLE (
  Col1 varchar(20),
  Col2 varchar(20)
)


INSERT INTO @t
EXEC _sp_MySp 1, 2, 3

IF EXISTS (SELECT 1 FROM @t) PRINT 'Empty'

Если вы можете изменить сохраненный процесс, вы можете вернуть его @@ROWCOUNT в качестве кода возврата или в качестве выходного параметра:

CREATE PROC _sp_MySp
  @p1 int,
  @p2 int,
  @p3 int
AS
  SELECT * FROM Table WHERE Col1 = @p1
  RETURN @@ROWCOUNT

DECLARE @rc int
EXEC @rc = _sp_MySP 1, 2, 3
IF @rc = 0 PRINT 'Empty'
ELSE PRINT CONVERT(varchar, @rc)
0 голосов
/ 31 мая 2010

Если я не ошибаюсь, операторы EXECUTE сохраняют предыдущий @@ ROWCOUNT. Поэтому ваше утверждение всегда будет возвращать 0. Попробуйте заменить «EXEC _sp_MySp 1, 2, 3» фактическими утверждениями вашего SP.

CREATE PROCEDURE _sp_MySp
   @p1 int, @p2 int, @p3 int
AS
   SELECT ... FROM ... WHERE ...

IF @@ROWCOUNT = 0
   BEGIN
       ...
   END
ELSE
   BEGIN
       ...
   END
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...