블로그 이미지
bedbmsguru

Notice

Recent Post

Recent Comment

Recent Trackback

Archive

calendar

1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
  • total
  • today
  • yesterday
2011. 1. 31. 16:54 SQL SERVER
Select exec

프로시져 결과값을 select 해야할 경우에 사용할 것~

--테스트 테이블 생성
CREATE TABLE TEST1
(
  col1 int, 
  col2 varchar(500)
)

--데이타 입력
INSERT INTO TEST1 VALUES(1, 'AAA')
INSERT INTO TEST1 VALUES(2, 'BBB')
INSERT INTO TEST1 VALUES(3, 'CCC')
INSERT INTO TEST1 VALUES(4, 'DDD')
INSERT INTO TEST1 VALUES(5, 'EEE')

--테스트 프로시져 생성
CREATE PROCEDURE usp_test_proc
(
    @index As INT
)
AS
SELECT *
FROM TEST1
WHERE col1 > @index


방법1
--######### 임시 테이블을 생성해서 데이타를 넣은후 필터링 ###################
CREATE TABLE #TEMP
(
     col1 int, 
    col2 varchar(500)
 )

INSERT #TEMP EXEC usp_test_proc 3
SELECT * FROM #TEMP WHERE col2 = 'EEE'
DROP TABLE #TEMP

--#######방법2 OPENROWSET 함수를 이용한다.

--2005에서는 Ad Hoc Distributed Queries 옵션이 default로 꺼져 있으므로 켜줘야 한다.
--켜주지 않을 경우 아래와 같은 에러가 발생한다.
메시지 15281, 수준 16, 상태 1, 줄 1
구성 요소 'Ad Hoc Distributed Queries'이(가) SQL Server 보안 구성의 일부로 해제되었으므로 이 구성 요소의 문 'OpenRowset/OpenDatasource'에
대한 액세스가 차단되었습니다. 시스템 관리자는 sp_configure를 사용하여 'Ad Hoc Distributed Queries'의 사용을 활성화할 수 있습니다. 'Ad Hoc Distributed Queries'
활성화 방법은 SQL Server 온라인 설명서의 "노출 영역 구성"을 참조하십시오.

sp_configure 'show advanced options', 1;
reconfigure


sp_configure 'Ad Hoc Distributed Queries', 1;
GO
RECONFIGURE;

sp_configure 'show advanced options', 0;
reconfigure
GO
---------------------------------------------------------------------

SELECT * FROM OPENROWSET('sqloledb', 'server=(local);trusted_connection=yes' ,'exec 디비이름.dbo.usp_test_proc 4')
posted by bedbmsguru