출력 매개 변수로 저장 프로 시저를 실행 하시겠습니까?


197

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

exec my_stored_procedure 'param1Value', 'param2Value'

최종 매개 변수는입니다 output parameter. 그러나 출력 매개 변수를 사용하여 저장 프로 시저를 테스트하는 방법을 모르겠습니다.

출력 매개 변수를 사용하여 저장 프로 시저를 어떻게 실행합니까?

답변:


225

쉬운 방법이다 right-clickprocedure에서 SQL Server 관리 Studio (SSMS)

고르다 execute stored procedure...

프롬프트가 표시되면 입력 매개 변수의 값을 추가하십시오 .

SSMS그런 다음 새 쿼리 창에서 proc을 실행하는 코드를 생성하고 실행합니다. 생성 된 코드를 연구하여 코드 수행 방법을 확인할 수 있습니다.


2
C # 또는 PHP에서 호출하는 EXEC와 같은 저장 프로 시저를 실행하는 다른 모든 가능한 방법을 알고 있지만 이것이 가장 쉽고 기술이 아닌 사람이 할 수 있습니다. 이를 위해 +1, 정보 공유를 위해 thx.
Dhaval September

execute명령 이 없으며 상황에 맞는 메뉴에는 modify.
Akbari

이상해 보인다. 저장 프로 시저의 상황에 맞는 메뉴에는 수정, 실행, 속성 등을 포함한 12 가지 항목이 있습니다.
Ray

2
나는 Jaider의 대답이 마우스 솔루션이 아니라 서면 명령에 관심이 있기 때문에이 답변을 완성한다고 생각합니다.
Alwyn Schoeman

SSMS를 사용하는 다른 방법 : SP를 마우스 오른쪽 단추로 클릭하고 "다른 이름으로 스크립트 저장 프로 시저"를 클릭 한 다음 "EXECUTE 대상"을 클릭하십시오. TSQL이 표시됩니다.
John Gilmer

167

당신은 이것을 할 수 있습니다 :

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

7
나는 마지막에 'OUTPUT'이라고 말하지 않았습니다. 항상 바보 같은 일이야, 고마워!
Milne

SSMS에서 대화 상자를 최대한 열지 않는 것이 좋으므로 이것이 완벽했습니다.
ahwm

89

절차에서 반환 값

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 

42

프로 시저 정의에서 처음 두 매개 변수는 입력 매개 변수이고 세 번째 매개 변수는 출력 매개 변수입니다.

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

30

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

도움이 되었기를 바랍니다!


26

절차 예 :

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

18

먼저 출력 변수를 선언하십시오.

DECLARE @MyOutputParameter INT;

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

EXEC my_stored_procedure 'param1Value', @MyOutputParameter OUTPUT

또는 매개 변수 이름으로 :

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

마지막으로 다음을 수행하여 출력 결과를 볼 수 있습니다 SELECT.

SELECT @MyOutputParameter 

4
이것은 선택된 답변
이었어 야했는데

9

이건 어때요? 매우 간단합니다.

  1. 아래 SPROC의 출력 매개 변수는 @ParentProductID

  2. 우리의 출력의 값을 선택합니다 @ParentProductID으로 @MyParentProductID아래에 선언된다.

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

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

7

다중 출력 매개 변수에 대해 올바르게 작동하십시오.

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

3
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

3

이 쿼리를 사용하면 저장 프로 시저 (출력 매개 변수 포함 또는 제외)를 실행할 수 있습니다 .

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

여기서 @temp의 데이터 유형은 SP 내의 @ parameter3과 같아야합니다.

도움이 되었기를 바랍니다..


이것은 나에게 도움이되었다. 감사합니다. 변수를 먼저 선언하지 않았다. 구문 예제를 볼 필요가있었습니다. 이게 다야
Steven Johnson

1

저장 프로시 저는 다음과 같습니다.

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

1

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

    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'

-1

SQL Proc에서 출력 매개 변수를 사용하고 나중에이 값을 결과 집합에 사용했습니다.

여기에 이미지 설명을 입력하십시오

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.