declare @tmptable table ( nid int identity(1,1) not null, title varchar(80) not null ) -- 테이블 변수 선언
insert @tmptable(title) select title from titles -- titles테이블의 title을 테이블변수에 삽입(루프생성을 위해)
declare @print varchar(5000) -- print변수 선언
declare @i int, @maxno int, @title varchar(80) -- 루프변수 선언 select @i=1, @maxno=max(nid) from @tmptable -- 루프변수 초기화 while @i<=@maxno -- 루프문 begin select @title=title from @tmptable where nid=@i-- 커서의 fetch into해당 if(@i = 1) begin set @print = @title end else begin set @print = @print + ' | ' + @title end set @i=@i+1 end print @print
#커서사용의 예
declare @title varchar(100) declare @print varchar(5000) set @print = '' declare c_cursor CURSOR FOR select title from titles for read only open c_cursor fetch next from c_cursor into @title while(@@fetch_status <> -1) begin if(@@fetch_status <> -2) begin if(@print = '') begin set @print = @title end else begin set @print = @print + ' | ' + @title end end fetch next from c_cursor into @title end close c_cursor deallocate c_cursor print @print
1) 개체 탐색기에서 서버 > 서버 개체 > 연결된 서버를 오른쪽 마우스 클릭하여 새 연결된 서버를 선택한다.
2) 일반 정보 설정 연결된 서버(N) : 연결명 공급자(P) : Microsoft OLE DB Provider for Oracle 제품 이름(U) : Oracle (오라클인 경우에는 Oracle) 데이터 원본(D) : 오라클 서비스 네임 즉, sid (orcl) 공금자 문자열(V) : 오라클 서비스 네임 즉, sid (orcl)
3) 보안 설정 원격지 SQL Server의 접속 정보(원격로그인 / 암호)를 입력한다.
4) 서버 옵션 설정 페이지 선택에서 서버 옵션을 선택합니다. RPC(Remote Procedure Call), RPC 내보내기를 True로 변경합니다. RPC는 원격 프로시져를 호출 할 수 있도록 하는 옵션입니다. 확인버튼을 눌러 DB 링크를 생성합니다. 생성을 하면 연결 테스트를 자동 수행합니다.
5) 확인버튼을 클릭하여 Linked Server 생성 완료하기. (자동으로 연결 테스트를 수행하여,테스트에 실패하면 오류가 발생한다.)
6) 로컬서버 > 서버 개체 > 연결된 서버를 보면 새로운 Linked Server 가 생성된 것을 확인할 수 있다.
※ 쿼리 사용법 (SELECT문)
-- Oracle은 dbo개념이 없기 때문에,FROM 절에서 dbo를 생략하여 .를 연속으로 2개 입력한다.(오타가 아님!)SELECT*FROM[Linked Server명]..[DB명].[테이블명]EX) Linked Server명 :ORACLE,DB명:TEST,테이블명:EMP 인 경우,EMP 테이블의 모든 데이터 조회하기
SELECT*FROMORACLE..TEST.EMP;