Sybase) Stored Procedure 결과를 Table 처럼 가져오기
Sybase 의 CIS (Component Integration Service) 기능을 활용하여
Stored Procedure 결과를 Table 처럼 SELECT 하는 예제를 소개하겠습니다.
- 먼저, 'enable CIS' configuration 이 활성화 되어야 합니다.
sp_configure 'enable CIS', 1
- Remote Server 로 자기 자신을 지칭하는 loopback 서버를 추가합니다.
sp_addserver ‘loopback’, ‘ASEnterprise’, <SERVER NAME>.
- 테스트 프로시져를 생성합니다. DB 는 pubs2 를 활용했습니다.
create procedure sp_test
@p_au_id varchar(11)
as
begin
select
au_id
,au_lname
,au_fname
,phone
from pubs2..authors
where au_id = @p_au_id
return 0
end
go
- CREATE EXISTING TABLE 구문을 사용하여 Proxy 테이블을 생성합니다.
- 주의사항은, Stored Procedure의 파라미터가 Proxy 테이블에 컬럼으로 위치해야 한다는 점입니다.
- 파라미터명 앞에 _(UnderScore) 를 붙여야 합니다.
- Ex) p_au_id → _p_au_id
- 파라미터 컬럼은 일반 데이터 컬럼의 뒤쪽에 위치 해야 합니다.
- 파라미터명 앞에 _(UnderScore) 를 붙여야 합니다.
create existing table authors_proxy
(
au_id varchar(11) not null,
au_lname varchar(40) not null,
au_fname varchar(20) not null,
phone char(12) not null,
_p_au_id varchar(11) null
)
external procedure at 'loopback.pubs2.dbo.sp_test'
go
- 아래처럼 SELECT 가 가능합니다.
- WHERE 조건에 파라미터에 넣은 값이 Stored Procedure의 파라미터로 사용됩니다.
select *
from authors_proxy
where _p_au_id = '238-95-7766'