database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
ㆍSybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Sybase Q&A 2010 게시물 읽기
No. 2010
Sybase cursor 사용법 질문 드립니다
작성자
전주형(shuiky)
작성일
2007-08-17 13:39
조회수
7,709

CREATE PROCEDURE TEST_CHANGE_PR
@pV_OLDSIGMA_DEPCD VARCHAR(20),  /*실적 이관전 부서코드*/
@pV_NEWSIGMA_DEPCD VARCHAR(20),  /*실적 이관후 부서코드*/
@pV_UPDATE_USER VARCHAR(20)
AS

BEGIN

DECLARE @pV_SQLSTRING VARCHAR(4000)

/*   TRIGGER DISABLE SQL 커서 시작                   */
DECLARE C_TRIGGER_SQLSTRING INSENSITIVE CURSOR FOR
   SELECT 'ALTER TABLE ' || B.name  || ' DISABLE TRIGGER ' || D.name
     FROM  syscolumns A, sysobjects B, sysdepends C, sysobjects D
    WHERE A.id = B.id
      AND B.id = C.depid
      AND B.type='U'
      AND C.id = D.id
      AND D.type='TR'
      AND A.name = 'V_SIGMA_DEPTCD'
      AND B.name  IN ('SPR_PROSIGMADEPT')

  
   OPEN C_TRIGGER_SQLSTRING
   WHILE(@@FETCH_STATUS = 0)
   BEGIN
      FETCH C_TRIGGER_SQLSTRING into @pV_SQLSTRING
      --EXEC(@pV_SQLSTRING)
      insert into TEST_CHANGE values('1')
   END
   CLOSE C_TRIGGER_SQLSTRING
   DEALLOCATE C_TRIGGER_SQLSTRING
  
/*   TRIGGER DISABLE SQL 커서 시작                   */
DECLARE C_DISABLE_TRIGGER_SQLSTRING INSENSITIVE CURSOR FOR
   SELECT 'ALTER TABLE ' || B.name  || ' DISABLE TRIGGER ' || D.name
     FROM  syscolumns A, sysobjects B, sysdepends C, sysobjects D
    WHERE A.id = B.id
      AND B.id = C.depid
      AND B.type='U'
      AND C.id = D.id
      AND D.type='TR'
      AND A.name = 'V_SIGMA_DEPTCD'
      AND B.name  IN ('SPR_PROSIGMADEPT')
   --커서 OPEN
  
   OPEN C_DISABLE_TRIGGER_SQLSTRING
   WHILE(@@FETCH_STATUS = 0)
   BEGIN
      FETCH C_DISABLE_TRIGGER_SQLSTRING into @pV_SQLSTRING
      --EXEC(@pV_SQLSTRING)
      insert into TEST_CHANGE values('2')
   END
   CLOSE C_DISABLE_TRIGGER_SQLSTRING  
   DEALLOCATE C_DISABLE_TRIGGER_SQLSTRING
  

END


위와 같이 프로시저 내에서 cursor 수행시에 두번째 커서에서 수행하는 insert 문이 안됩니다.
여러 검색을 통해
도움 부탁드립니다...

이 글에 대한 댓글이 총 1건 있습니다.

@FETCH_STATUS 가 처음 FETCH 한 이후에 -1로 셋팅 되어있어서 그런거 
같습니다. 이것을 FET_STATUS를 사용한 WHILE문 말고 FOR 문으로 바꿔야하나요?
혹 방법을 아시는 분은 댓글 좀 달아주세요.... 많은 관심 부탁드립니다 유유

전주형님이 2007-08-20 10:28에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
2014ASE JAVA에서 update가 안되네요. [3]
난해
2007-08-20
6158
2013ASE update .. subquery 지원이 안되나요? [3]
난해
2007-08-20
7047
2011rtrim 함수 이용시 index를 못타게 하나요? [1]
천적
2007-08-17
5965
2010Sybase cursor 사용법 질문 드립니다 [1]
전주형
2007-08-17
7709
2009EXIST와 NOT EXIST의 차이. [2]
오종선
2007-08-14
8105
2008DB 복구 관련 문의 [1]
정성환
2007-08-09
6035
2007인덱스 관련... [1]
질문이요
2007-08-08
5945
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다