Хранимая процедура SQL Server не возвращает значение - PullRequest
0 голосов
/ 08 мая 2019

У меня есть таблица с некоторыми данными, и я написал хранимую процедуру для возврата количества строк:

ALTER PROCEDURE [dbo].[SP_User_Case_Answer_Found]
    @userID BIGINT,
    @visitID BIGINT
AS
    RETURN 
        SELECT COUNT(*) 
        FROM User_Case_Answer
        WHERE userID = @userID
          AND pvisitID = @visitID
GO

, и когда я ее выполняю, я получаю:

DECLARE @return_value int

EXEC    @return_value = [dbo].[SP_User_Case_Answer_Found]
        @userID = 26,
        @visitID = 5

SELECT  'Return Value' = @return_value
GO

Но возвращаемое значение = 0?Я уверен, что таблица содержит данные.

Ответы [ 2 ]

3 голосов
/ 08 мая 2019

Заключите запрос в скобки.

CREATE PROCEDURE [dbo].[SP_User_Case_Answer_Found]
    @userID BIGINT,
    @visitID BIGINT
AS
   return (SELECT count (*) 
    FROM User_Case_Answer
    WHERE userID = @userID
    AND pvisitID = @visitID)

db <> fiddle

0 голосов
/ 08 мая 2019

Удалите return из оператора SELECT в хранимой процедуре.Это не нужноВы должны использовать return, если вы пытаетесь замкнуть накоротко и не вернуть набор результатов, или если вы возвращаете код состояния, такой как RETURN 1.

   ALTER PROCEDURE [dbo].[SP_User_Case_Answer_Found]
        @userID BIGINT
        ,@visitID BIGINT
    AS
           SELECT COUNT(*) 
           FROM User_Case_Answer
           WHERE userID = @userID
               AND pvisitID = @visitID;
    GO

Вам не нужно связыватьВозвращайте значение при вызове процедуры.

EXEC [dbo].[SP_User_Case_Answer_Found] @userID = 26, @visitID = 5

Параметр возвращаемого значения потребуется, если вы используете выходной параметр. T-SQL RETURN

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