답변:
항상 반환 값을 사용하여 오류 상태를 다시 전달합니다. 하나의 값을 다시 전달해야하는 경우 출력 매개 변수를 사용합니다.
OUTPUT 매개 변수가있는 샘플 저장 프로 시저 :
CREATE PROCEDURE YourStoredProcedure
(
@Param1 int
,@Param2 varchar(5)
,@Param3 datetime OUTPUT
)
AS
IF ISNULL(@Param1,0)>5
BEGIN
SET @Param3=GETDATE()
END
ELSE
BEGIN
SET @Param3='1/1/2010'
END
RETURN 0
GO
OUTPUT 매개 변수를 사용하여 저장 프로 시저를 호출합니다.
DECLARE @OutputParameter datetime
,@ReturnValue int
EXEC @ReturnValue=YourStoredProcedure 1,null, @OutputParameter OUTPUT
PRINT @ReturnValue
PRINT CONVERT(char(23),@OutputParameter ,121)
산출:
0
2010-01-01 00:00:00.000
단순히 정수를 반환하려는 경우 작동합니다.
DECLARE @ResultForPos INT
EXEC @ResultForPos = storedprocedureName 'InputParameter'
SELECT @ResultForPos
UNIQUEIDENTIFIER
.
declare @EventId int
CREATE TABLE #EventId (EventId int)
insert into #EventId exec rptInputEventId
set @EventId = (select * from #EventId)
drop table #EventId
로부터 문서 (당신은 SQL-Server를 사용한다고 가정) :
USE AdventureWorks;
GO
DECLARE @returnstatus nvarchar(15);
SET @returnstatus = NULL;
EXEC @returnstatus = dbo.ufnGetSalesOrderStatusText @Status = 2;
PRINT @returnstatus;
GO
네, 그렇게되어야합니다.
저도 같은 질문을했습니다. 여기에 좋은 대답이 있지만 테이블 반환 함수를 만들기로 결정했습니다. 테이블 (또는 스칼라) 값 함수를 사용하면 저장된 프로 시저를 변경할 필요가 없습니다. 저는 단순히 테이블 반환 함수에서 선택했습니다. 매개 변수 (MyParameter는 선택 사항 임)에 유의하십시오.
CREATE FUNCTION [dbo].[MyDateFunction]
(@MyParameter varchar(max))
RETURNS TABLE
AS
RETURN
(
--- Query your table or view or whatever and select the results.
SELECT DateValue FROM MyTable WHERE ID = @MyParameter;
)
변수에 할당하려면 다음과 같이하면됩니다.
Declare @MyDate datetime;
SET @MyDate = (SELECT DateValue FROM MyDateFunction(@MyParameter));
스칼라 값 함수를 사용할 수도 있습니다.
CREATE FUNCTION TestDateFunction()
RETURNS datetime
BEGIN
RETURN (SELECT GetDate());
END
그런 다음 간단히 할 수 있습니다.
Declare @MyDate datetime;
SET @MyDate = (Select dbo.TestDateFunction());
SELECT @MyDate;