source

Output 매개 변수를 사용하여 저장 프로시저를 실행하시겠습니까?

ittop 2023. 4. 7. 21:57
반응형

Output 매개 변수를 사용하여 저장 프로시저를 실행하시겠습니까?

테스트하려는 저장 프로시저가 있습니다.SQL Management Studio를 통해 테스트하려고 합니다.이 테스트를 실행하려면 ...을 입력합니다.

exec my_stored_procedure 'param1Value', 'param2Value'

마지막 파라미터는output parameter그러나 출력 파라미터를 사용하여 스토어드 프로시저를 테스트하는 방법은 모릅니다.

출력 파라미터를 사용하여 저장 프로시저를 실행하려면 어떻게 해야 합니까?

SSMS(Sql Server Management Studio)에서 프로시저를 마우스 오른쪽 버튼으로 클릭하고 '저장 프로시저 실행'을 선택합니다." 및 입력 파라미터 값을 프롬프트에 따라 입력 파라미터 값을 추가합니다.SSMS는 새로운 쿼리 창에서 프로시저를 실행하기 위한 코드를 생성하여 대신 실행합니다.생성된 코드를 조사하여 어떻게 작동하는지 확인할 수 있습니다.

다음과 같이 할 수 있습니다.

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

절차에서 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 

절차 정의에서 처음 두 개의 파라미터가 입력 파라미터이고 세 번째 파라미터가 출력 파라미터인 경우 이 됩니다.

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

순서의 예:

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

https://learn.microsoft.com/en-US/sql/relational-databases/system-stored-procedures/sp-executesql-transact-sql 에서 (일반적으로 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,
@parm=@parmIN,
@parm1OUT=@parmRET1 OUTPUT,@parm2OUT=@parmRET2 OUTPUT

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

먼저 출력 변수를 선언합니다.

DECLARE @MyOutputParameter INT;

그런 다음 저장 프로시저를 실행하면 다음과 같이 매개 변수 이름 없이 수행할 수 있습니다.

EXEC my_stored_procedure 'param1Value', @MyOutputParameter OUTPUT

또는 매개 변수 이름을 사용합니다.

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

마지막으로 출력 결과를 확인할 수 있습니다.SELECT:

SELECT @MyOutputParameter 

이 쿼리를 사용하여 저장 프로시저를 실행할 수 있습니다(출력 파라미터의 유무에 관계없이).

DECLARE @temp varchar(100)  
EXEC my_sp
    @parameter1 = 1, 
    @parameter2 = 2, 
    @parameter3 = @temp output, 
    @parameter4 = 3, 
    @parameter5 = 4
PRINT @temp

여기서의 데이터 타입은@temp와 같아야 한다.@parameter3저장 프로시저에 있습니다.

이건 어때?매우 심플합니다.

  1. 아래 SPROC의 출력 파라미터는 다음과 같습니다.@ParentProductID

  2. 출력값을선택하고싶습니다.@ParentProductID안으로@MyParentProductID아래에 선언되어 있습니다.

  3. 코드는 다음과 같습니다.

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

다음과 같이 시도해 보십시오. 다중 출력 파라미터는 정상적으로 작동합니다.

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'=@login,'password'=@password
CREATE PROCEDURE DBO.MY_STORED_PROCEDURE
(@PARAM1VALUE INT,
@PARAM2VALUE INT,
@OUTPARAM VARCHAR(20) OUT)
AS 
BEGIN
SELECT * FROM DBO.PARAMTABLENAME WHERE PARAM1VALUE=@PARAM1VALUE
END

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

다음은 저장 프로시저입니다.

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

그리고 여기 그 절차를 실행하는 방법이 있습니다.

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

저장 프로시저를 실행하여 출력 변수 값을 얻으려면 아래 예를 확인하십시오.

    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'

stored_proc의 정의는 다음과 같습니다.

create proc product(@a int,@b int)
as
return @a * @b

Python에서 실행 중입니다.conn = pyodbc . connect...' 커서 = conn.connect()

sql = """
SET NOCOUNT ON
declare @r float
exec @r=dbo.product 5,4
select @r
"""
result = cursor.execute(sql)
print (result.fetchall())

언급URL : https://stackoverflow.com/questions/1589466/execute-stored-procedure-with-an-output-parameter

반응형