2012-09-13 2 views
0

proc1sp_DateFromRange을 저장 한 날짜를 반환했습니다. 다른 데이터가있는 테이블을 반환하는 proc2이 있습니다. storedproc2에는 날짜 매개 변수 @datefrom@dateto이 있습니다.다른 저장 프로 시저에서 선언 된 매개 변수에 저장 프로 시저를 할당하는 방법

이제 내가 storedproc2

@datefromstoredproc1를 할당해야하면 좋겠다고하는 방식은 불가능, 그것은 가능

+0

어떻게'날짜를 반환 proc1'는 무엇입니까? 출력 매개 변수 또는 결과 집합? – Andomar

+0

결과 집합 –

답변

1

을하지 할당하는 것입니다.

가 여기에 저장 프로 시저 내 의견으로는

How to Share Data between Stored Procedures

사이에 데이터를 공유하는 방법에 대한 흥미로운 기사입니다, 가장 간단한 방법은 출력 매개 변수 또는 임시 테이블을 사용하는 것입니다. 자세한 정보는 링크를 확인하십시오. 다음은 출력 매개 변수를 사용하는 간단한 방법입니다.

DECLARE @datefrom smalldatetime 

Exec storedproc1 @datefrom OUTPUT 

Exec storedproc2 @datefrom 

여기

DECLARE @datefrom smalldatetime 

CREATE TABLE #tmp (dateFrom smalldatetime) 

INSERT #tmp 
EXEC storedproc1 

SELECT TOP 1 @datefrom = dateFrom FROM #tmp 

Exec storedproc2 @datefrom 

또한 공유 임시 테이블를 사용할 수있는 저장 프로 시저에서 설정할 결과를 얻기를 위해 임시 테이블을 사용하는 또 다른 간단한 예입니다. 내가 제공 한 기사에서 구현을 찾을 수 있습니다.

행운을 빌어 요!

0

매개 변수 @datefromsp_DateFromRange의 출력 매개 변수 여야합니다 :

create procedure DateFromRange(
    @datefrom datetime = null output 
) 
as begin 
--body 
end 

당신은 시도 할 수 있습니다 :

declare @date datetime 

exec sp_DateFromRange @date out 

exec storedproc2 @datefrom = @date , @dateto = @value 
or 
exec storedproc2 @date, @value 

편집 :

결과가

declare @date datetime 

exec @date = sp_DateFromRange 

exec storedproc2 @datefrom = @date , @dateto = @value 
or 
exec storedproc2 @date, @value 
0을 설정하여
+0

OP는 날짜가 결과 집합에 있음을 주석 처리했습니다. – Andomar

+0

예, 내 게시물을 편집합니다. – Parado

+0

@Andomar 가능하다면 출력 매개 변수로 변경할 수 있으며 그에게 더 편안한 솔루션입니다. – hgulyan

0

insert ... exec을 사용하여 저장 프로 시저의 출력 세트를 캡처 할 수 있습니다. 삽입하려는 테이블의 정의는 저장 프로 시저의 결과와 정확히 일치해야합니다. 예를 들어

:

if object_id('proc1') is not null 
    drop procedure proc1 
if object_id('proc2') is not null 
    drop procedure proc2 
go 
create procedure proc1 
as 
select getdate() as col1 
go 
create procedure proc2 
    @col2 datetime 
as 
print 'Col2 = ' + cast(@col2 as varchar(24)) 
go 
declare @sp_result table (col1 datetime) 

insert @sp_result 
exec proc1 

declare @col1 datetime 
select @col1 = col1 
from @sp_result 

exec proc2 @col1 

이 인쇄 :

(1 row(s) affected) 
Col2 = Sep 13 2012 9:11AM 
관련 문제