Programming

exec 결과를 SQL 변수에 할당하는 방법은 무엇입니까?

procodes 2020. 8. 26. 19:43
반응형

exec 결과를 SQL 변수에 할당하는 방법은 무엇입니까?


exec 호출의 결과를 SQL의 변수에 어떻게 할당합니까? up_GetBusinessDay단일 날짜를 반환 하는 저장된 proc이 있습니다.

다음과 같이 할 수 있습니까?

exec @PreviousBusinessDay = dbo.up_GetBusinessDay @Date, -1

항상 반환 값을 사용하여 오류 상태를 다시 전달합니다. 하나의 값을 다시 전달해야하는 경우 출력 매개 변수를 사용합니다.

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

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

네, 그렇게되어야합니다.


I had the same question. While there are good answers here I decided to create a table-valued function. With a table (or scalar) valued function you don't have to change your stored proc. I simply did a select from the table-valued function. Note that the parameter (MyParameter is optional).

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;
)

To assign to your variable you simply can do something like:

Declare @MyDate datetime;
SET @MyDate = (SELECT DateValue FROM MyDateFunction(@MyParameter));

You can also use a scalar valued function:

CREATE FUNCTION TestDateFunction()  
RETURNS datetime  
BEGIN  
    RETURN (SELECT GetDate());
END

Then you can simply do

Declare @MyDate datetime;
SET @MyDate = (Select dbo.TestDateFunction());
SELECT @MyDate;

참고URL : https://stackoverflow.com/questions/2245691/how-to-assign-an-exec-result-to-a-sql-variable

반응형