мы можем иметь хранимую процедуру с выходными параметрами и оператором return? - PullRequest
0 голосов
/ 04 мая 2010

Может ли хранимая процедура иметь выходные параметры и оператор возврата? Если так, то кто-нибудь может дать мне простой пример. Спасибо вам всем.

Ответы [ 4 ]

2 голосов
/ 04 мая 2010

Хранимая процедура может возвращать целочисленный тип только в операторе возврата и может иметь любое количество выходных параметров. См. для ссылок, поддерживающих это.

Простейший пример хранимой процедуры

Возвращает целочисленное значение из SP

CREATE procedure [sys].[sp_name]
(
    @var1       bit = 0,
    @publisher  smallint                    
)
AS
BEGIN

    IF @var1<> 0
        RETURN (@publisher  )
 END

Использование параметра Out

CREATE PROCEDURE GetImmediateManager
   @employeeID INT,
   @managerID INT OUTPUT
AS
BEGIN
   SELECT @managerID = ManagerID 
   FROM HumanResources.Employee 
   WHERE EmployeeID = @employeeID
END

Вы можете использовать транзакции, обработку исключений (попробуйте Catch), запросы DDL и DML, вызывая другую хранимую процедуру в рамках одной хранимой процедуры и многие другие операции.

Пожалуйста, прокомментируйте дополнительные функции, поддерживаемые в хранимой процедуре

1 голос
/ 04 мая 2010

Вы можете использовать как OUTPUT params, так и одно RETURN значение:

CREATE PROCEDURE RaiseToPower (
      @IN  INT, 
      @OUT INT OUTPUT
   )
AS
   DECLARE @POWER INT 
   SET @POWER = 3
   SET @OUT = POWER(@IN, @POWER)
   RETURN @POWER
GO

/**/
DECLARE @POW INT, @RESULT INT

EXEC @POW = dbo.RaiseToPower 2, @RESULT OUTPUT 

SELECT 2, 'raised to', @POW, 'is', @RESULT

>> 2 raised to 3 is 8
1 голос
/ 04 мая 2010

Если вы имеете в виду стандартный оператор RETURN, который дает целое число, тогда да

Если вы имеете в виду UDF RETURN, то нет. Но хранимый процесс может иметь обычный SELECT

0 голосов
/ 04 мая 2010

Нет. Это либо хранимая процедура, либо скалярная функция.

Скалярная функция возвращает значение и принимает от 0 до n в параметрах.

Хранимая процедура может принимать от 0 до n входных параметров и может иметь от 0 до n выходных параметров.

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