복붙노트

[SQL] 어떻게 SQL 변수에 간부 인 결과를 할당?

SQL

어떻게 SQL 변수에 간부 인 결과를 할당?

어떻게 SQL에서 변수에 간부 호출의 결과를 할당합니까? 나는 하나의 날짜를 반환 up_GetBusinessDay라는 저장된 프로 시저를 가지고있다.

이 같은 작업을 수행 할 수 있습니다

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

해결법

  1. ==============================

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

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

    출력 매개 변수, 저장 프로 시저를 샘플 :

    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
    

    출력 매개 변수를 사용하여 저장 프로 시저를 호출

    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
    
  2. ==============================

    2.당신은 단순히 정수를 반환하려는 경우에 작동합니다 :

    당신은 단순히 정수를 반환하려는 경우에 작동합니다 :

    DECLARE @ResultForPos INT 
    EXEC @ResultForPos = storedprocedureName 'InputParameter'
    SELECT @ResultForPos
    
  3. ==============================

    3.

    declare @EventId int
    
    CREATE TABLE #EventId (EventId int)
    
    insert into #EventId exec rptInputEventId
    
    set @EventId = (select * from #EventId)
    
    drop table #EventId 
    
  4. ==============================

    4.문서에서 (당신은 SQL-Server를 사용한다고 가정) :

    문서에서 (당신은 SQL-Server를 사용한다고 가정) :

    USE AdventureWorks;
    GO
    DECLARE @returnstatus nvarchar(15);
    SET @returnstatus = NULL;
    EXEC @returnstatus = dbo.ufnGetSalesOrderStatusText @Status = 2;
    PRINT @returnstatus;
    GO
    

    그래서 그래, 그것은 그런 식으로 작동합니다.

  5. ==============================

    5.나는 같은 질문을했다. 여기에 좋은 답변을이 있지만 나는 테이블 반환 함수를 작성하기로 결정했다. 테이블 (또는 스칼라) 반환 함수 사용하면 저장된 프로 시저를 변경할 필요가 없습니다. 나는 단순히 테이블 반환 함수에서 선택했다. 매개 변수 (MyParameter는 선택 사항입니다)합니다.

    나는 같은 질문을했다. 여기에 좋은 답변을이 있지만 나는 테이블 반환 함수를 작성하기로 결정했다. 테이블 (또는 스칼라) 반환 함수 사용하면 저장된 프로 시저를 변경할 필요가 없습니다. 나는 단순히 테이블 반환 함수에서 선택했다. 매개 변수 (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;
    
  6. from https://stackoverflow.com/questions/2245691/how-to-assign-an-exec-result-to-a-sql-variable by cc-by-sa and MIT license