728x90

View안에 StoredProcedure를 쓰는 방법
====================================
가끔sp_addlinkedserver를 구현한다.
다음은 mssql의 odbc를 linkServer로 구현한 것임.
sp_addlinkedserver 
      @server =  'myDB',
      @srvproduct =  '',
      @provider =  'MSDASQL',
      @datasrc = <sys_dsn_name>, --system dsn
      @location =  null,
      @provstr =     'DRIVER={SQL Server};SERVER=*******;UID=*****;PWD=*****;'
--linkserver에 로긴
sp_addlinkedsrvlogin 'myDB', 'false', NULL, '<login_id>', '<login_pwd>'

select * from openQuery (myDB, 'Exec myDB.<db_owner>.<sp_name>')

위의 형태로의 구현을 마쳤다면 view로 만드는 것은 너무도 간단할 것이다.
create view view_name as
 select * from openQuery (myDB, 'Exec myDB.<db_owner>.<sp_name>')
이렇게 하시면 sp가 view속으로 들어온 형태가 된다.

728x90
SQL 2005 Management Studio가 SQL 2000 쿼리분석기보다
뜨는 속도가 상대적으로 느립니다.
 
빨리뜨게 하시려면,
 
프로그램 / Microsoft SQL Server 2005 / SQL Server Management Studio의 속성(오른마우스)에 다음정보를 추가하시면 됩니다.
 
"C:\Program Files\Microsoft SQL Server\90\Tools\Binn\VSShell\Common7\IDE\SqlWb.exe"
-->
"C:\Program Files\Microsoft SQL Server\90\Tools\Binn\VSShell\Common7\IDE\SqlWb.exe" /nosplash
728x90

create   FUNCTION dbo.SplitTableStr
(   
   @vcList VARCHAR(8000),
   @vcDelimiter    VARCHAR(2)
)
RETURNS @Arrary TABLE (IndexNo int identity, Value varchar(500), PRIMARY KEY (IndexNo))

BEGIN
    DECLARE    @iPosStart    INT,
        @iPosEnd    int,
        @iLenDelim    tinyint,
        @iExit        tinyint,
        @vcStr        varchar(1000)

    SET @iPosStart = 1
    SET @iPosEnd = 1
    SET @iLenDelim = LEN(@vcDelimiter)

    SET @iExit = 0
    IF @vcList IS NOT NULL AND @vcList <> ''
    BEGIN
      -- 모든 항목을 검색할 때까지 루트 처리
      WHILE @iExit = 0
      BEGIN
         -- 구분문자를 기준으로 다음 항목의 위치 검색
         SET @iPosEnd = CHARINDEX(@vcDelimiter, @vcList, @iPosStart)

         IF @iPosEnd <= 0
         BEGIN
               SET @iPosEnd = LEN(@vcList) + 1
               SET @iExit = 1
         END

         -- 아래 @vcStr은 필요한 경우 LTRIM, RTRIM을 적용해야 한다.
         SET @vcStr = LTRIM(RTRIM(SUBSTRING(@vcList, @iPosStart, @iPosEnd - @iPosStart)))

         -- 테이블 변수에 저장
         IF @vcStr <> 'NULL'
            INSERT INTO @Arrary (Value) VALUES (@vcStr)
         ELSE
            INSERT INTO @Arrary (Value) VALUES (NULL)

         -- 다음 검색 위치로 이동
         SET @iPosStart = @iPosEnd + @iLenDelim
      END
    END
    ELSE
    BEGIN
       INSERT INTO @Arrary (Value) VALUES (NULL)
    END

    RETURN
END

+ Recent posts