Выполнить хранимую процедуру с помощью параметра Output?

У меня есть хранимая процедура, которую я пытаюсь проверить. Я пытаюсь проверить его через SQL Management Studio. Чтобы запустить этот тест, я вхожу...

exec my_stored_procedure 'param1Value', 'param2Value'

Конечным параметром является output parameter. Однако я не знаю, как проверить хранимую процедуру с выходными параметрами.

Как запустить хранимую процедуру с параметром вывода?

Ответ 1

Простым способом является right-click на procedure в Sql Server Management Studio (SSMS),

выберите execute stored procedure...

и добавьте значения для параметров ввода в соответствии с запросом.

SSMS затем сгенерирует код для запуска proc в новом окне запроса и выполнит его для вас. Вы можете изучить сгенерированный код, чтобы посмотреть, как это делается.

Ответ 2

вы можете сделать это:

declare @rowCount int
exec yourStoredProcedureName @outputparameterspOf = @rowCount output

Ответ 3

Возвращает значение val из процедуры

ALTER PROCEDURE testme @input  VARCHAR(10),
                       @output VARCHAR(20) output
AS
  BEGIN
      IF @input >= '1'
        BEGIN
            SET @output = 'i am back';

            RETURN;
        END
  END

DECLARE @get VARCHAR(20);

EXEC testme
  '1',
  @get output

SELECT @get 

Ответ 4

Проверьте это, где первые два параметра являются входными параметрами, а третий - выходным параметром в определении процедуры.

DECLARE @PK_Code INT;
EXEC USP_Validate_Login  'ID', 'PWD', @PK_Code OUTPUT
SELECT @PK_Code

Ответ 5

От http://support.microsoft.com/kb/262499

Пример:

CREATE PROCEDURE Myproc

@parm varchar(10),
**@parm1OUT varchar(30) OUTPUT**,
**@parm2OUT varchar(30) OUTPUT**
AS
  SELECT @parm1OUT='parm 1' + @parm
 SELECT @parm2OUT='parm 2' + @parm

GO

DECLARE @SQLString NVARCHAR(500)
DECLARE @ParmDefinition NVARCHAR(500)
DECLARE @parmIN VARCHAR(10)
DECLARE @parmRET1 VARCHAR(30)
DECLARE @parmRET2 VARCHAR(30)

SET @parmIN=' returned'
SET @SQLString=N'EXEC Myproc @parm,
                         @parm1OUT OUTPUT, @parm2OUT OUTPUT'
SET @ParmDefinition=N'@parm varchar(10),
                  @parm1OUT varchar(30) OUTPUT,
                  @parm2OUT varchar(30) OUTPUT'

EXECUTE sp_executesql
@SQLString,
@ParmDefinition,
@[email protected],
@[email protected] OUTPUT,@[email protected] OUTPUT

SELECT @parmRET1 AS "parameter 1", @parmRET2 AS "parameter 2"
GO
DROP PROCEDURE Myproc

Надеюсь, это поможет!

Ответ 6

Пример процедуры:

Create Procedure [dbo].[test]
@Name varchar(100),
@ID int Output   
As  
Begin   
SELECT @ID = UserID from tbl_UserMaster where  Name = @Name   
Return;
END     

Как вызвать эту процедуру

Declare @ID int    
EXECUTE [dbo].[test] 'Abhishek',@ID OUTPUT   
PRINT @ID

Ответ 7

Сначала объявите выходную переменную:

DECLARE @MyOutputParameter INT;

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

EXEC my_stored_procedure 'param1Value', @MyOutputParameter OUTPUT

или с именами параметров:

EXEC my_stored_procedure @param1 = 'param1Value', @myoutput = @MyOutputParameter OUTPUT

И, наконец, вы можете увидеть выходной результат, выполнив SELECT:

SELECT @MyOutputParameter 

Ответ 8

Как насчет этого? Это чрезвычайно упрощено:

  • Ниже SPROC имеет выходной параметр @ParentProductID

  • Мы хотим выбрать значение вывода @ParentProductID в @MyParentProductID, которое объявлено ниже.

  • Здесь Код:

    declare @MyParentProductID int
    
    exec p_CheckSplitProduct @ProductId = 4077, @ParentProductID =  @MyParentProductID output
    
    select @MyParentProductID
    

Ответ 9

Попробуйте использовать его для большого выходного параметра:

CREATE PROCEDURE [endicia].[credentialLookup]
@accountNumber varchar(20),
@login varchar(20) output,
@password varchar(50) output
AS
BEGIN
SET NOCOUNT ON;
SELECT top 1 @login = [carrierLogin],@password = [carrierPassword]
  FROM [carrier_account] where carrierLogin = @accountNumber
  order by clientId, id
END

Try for the result: 
SELECT *FROM [carrier_account] 
DECLARE @login varchar(20),@password varchar(50)
exec [endicia].[credentialLookup] '588251',@login OUTPUT,@password OUTPUT
SELECT 'login'[email protected],'password'[email protected]

Ответ 10

CREATE PROCEDURE DBO.MY_STORED_PROCEDURE
(@PARAM1VALUE INT,
@PARAM2VALUE INT,
@OUTPARAM VARCHAR(20) OUT)
AS 
BEGIN
SELECT * FROM DBO.PARAMTABLENAME WHERE [email protected]
END

DECLARE @OUTPARAM2 VARCHAR(20)
EXEC DBO.MY_STORED_PROCEDURE 1,@OUTPARAM2 OUT
PRINT @OUTPARAM2

Ответ 11

Вот хранимая процедура

create procedure sp1
(
@id as int,
@name as nvarchar(20) out
)
as
begin
select @name=name from employee where [email protected]
end

И вот способ выполнения процедуры

 declare @name1 nvarchar(10)
    exec sp1 1,@name1 out
    print @name1

Ответ 12

Пожалуйста, проверьте приведенный ниже пример, чтобы получить значение выходной переменной, выполнив хранимую процедуру.

    DECLARE @return_value int,
    @Ouput1 int,
    @Ouput2 int,
    @Ouput3 int

EXEC    @return_value = 'Your Sp Name'
        @Param1 = value1,
        @Ouput1 = @Ouput1 OUTPUT,
        @Ouput2 = @Ouput2 OUTPUT,
        @Ouput3 = @Ouput3 OUTPUT

SELECT  @Ouput1 as N'@Ouput1',
        @Ouput2 as N'@Ouput2',
        @Ouput3 as N'@Ouput3'

Ответ 13

Я не совсем уверен, что вы ищете. Насколько я понимаю ваш вопрос, самый простой способ проверить, хранится ли в MS SQL Server хранимая процедура создания хранимой процедуры ниже, которая будет выводить текущую дату.

CREATE PROC [dbo].[SP0000_TestingForPythonScript]
AS
BEGIN
    SELECT GETDATE()

END 
GO

Надеюсь, поможет. В противном случае, пожалуйста, напишите мне, что именно вы ищете.

Ответ 14

Я использую выходной параметр в SQL Proc, а затем я использовал эти значения в наборе результатов.

enter image description here