프로그래밍/DB, SQL, EF
[MSSQL] 저장프로시저 안에서 저장프로시저 호출 - 'Execute'이용
당근천국
2013. 6. 25. 15:16
저장프로시저 안에서 다른 저장프로시저를 호출하려면 크게 보자면 2가지 방법이 있습니다.
Exec(EXECUTE)나 sp_executesql를 이용하면 됩니다.
(참고 : MSDN - sp_executesql 사용)
Exec(EXECUTE)나 sp_executesql를 이용하면 됩니다.
(참고 : MSDN - sp_executesql 사용)
이 포스팅에서는 Exec(EXECUTE)만 다루 겠습니다.
1. 리턴값이 없을때
리턴값이 없으면 그냥 호출하면 됩니다.
--Exec [저장프로시저 이름] --Exec [저장프로시저 이름] [매개변수1],[매개변수2],.... Exec TestSelect @temp
2.리턴값이 있을때
리턴값은 항상 int형이므로 인티저형의 변수를 하나 선언한후 값을 대입하는 방식으로 받습니다.
--Exec [값을 받을 변수] = [저장프로시저 이름] [매개변수1],[매개변수2],.... Declare @nTemp int Exec @nTemp = TestSelect @temp
3. 셀랙트(Select)값이 있을때
셀랙트로 값을 받아올때는 임시테이블이나 테이블 변수를 사용하면 됩니다.
임시테이블보다는 테이블 변수를 사용한 방법이 좋습니다.
참고 : [MSSQL] 저장프로시저에서 테이블(Table) 변수 사용하기
--리턴값을 받기위한 임시 테이블
--Create Table [생성할 테이블 이름] ( [컬럼명] [데이터형], ... , [컬럼명] [데이터형] )
Create Table #Result ( nIndex int
, sName varchar(16)
, sID varchar(16))
--Insert [임시테이블] Exec [sql문]
Insert #Result Exec ProcTest @nIndox
, @sName
, @sID
정말 알고 보니 별거 없죠? ㅎㅎㅎ