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
저장 프로시저에 있습니다.
이건 어때?매우 심플합니다.
아래 SPROC의 출력 파라미터는 다음과 같습니다.
@ParentProductID
출력값을선택하고싶습니다.
@ParentProductID
안으로@MyParentProductID
아래에 선언되어 있습니다.코드는 다음과 같습니다.
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
'source' 카테고리의 다른 글
SQL Server에서 테이블 이름을 변경하는 방법 (0) | 2023.04.07 |
---|---|
SQL Server에서 날짜/시간을 자르는 방법은 무엇입니까? (0) | 2023.04.07 |
SQL Server 저장 프로시저에 어레이를 전달하는 방법 (0) | 2023.04.07 |
SQL Server의 'descript table'과 동등한 것은 무엇입니까? (0) | 2023.04.07 |
Check Add 구속조건 뒤에 Check 구속조건 vs. 구속조건 추가 (0) | 2023.04.07 |