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
운영게시판
최근게시물
DB2 Q&A 1591 게시물 읽기
No. 1591
SQL문장 단위 알아내는 법
작성자
조성환(조댕이)
작성일
2008-04-18 17:32ⓒ
2008-04-18 17:42ⓜ
조회수
9,813

EXT_LOG UDF함수는 SQL문장 로그를 남기는 함수입니다.

이 함수가 불린 로그를 남기려고 하는데요.
로그는 대충 테이블 이름, 불린 문장 종류, 변수값 이런거 말이죠.



INSERT INTO TEST VALUES (EXT_LOG(1));
이렇게 불리면 한건을 적는 것입니다.


INSERT INTO TEST VALUES(EXT_LOG(1));
INSERT INTO TEST VALUES(EXT_LOG(2));

이런 식으로 하면 로그는 두개가 적혀야 합니다.

하지만


BEGIN ATOMIC 
 DECLARE V_ID INTEGER;

  SET V_ID = 0;
  WHILE V_ID < 100 DO
   
    INSERT INTO TEST VALUES(EXT_LOG(V_ID));
  END WHILE;
END;

이런 식으로 불리면 100건 적는게 아니라 문장을 실행하는 단위는 한 문장이기 때문에 
로그를 한개만 적어야 하는 것인데 이렇게 할려면 어떻게 해야 하나요.

문장 단위를 알아내는 방법을 알고 싶습니다.
함수가 불린 횟수가 아니라 문장단위로 적고 싶은 겁니다.

INSERT INTO TEST2(ID1,ID2) VALUES(EXT_LOG(1), EXT_LOG(2));
이렇게 함수가 두번 불렸다고 해서 두번 적는게 아니라 한번만 불려야 하는데
함수 안에서 어떻게 알수 있을까요?



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

table function은 temp table을 사용하세요. 



============================================

connect to sample;

create table splog (rsql varchar(200));

declare global temporary table t1 (c1 int, c2 varchar(200))

on commit preserve rows not logged ;

insert into session.t1 values(1,'11111111111111111');

insert into session.t1 values(2,'22222222222222222');

insert into session.t1 values(3,'33333333333333333');

insert into session.t1 values(4,'44444444444444444');

insert into splog select c2 from session.t1 where c1=3;

insert into splog select c2 from session.t1 where c1=1;

select * from splog;


============================================

db2 -x "select * from splog"

33333333333333333                                                                                                                                                                                      

11111111111111111         


       

조는 냥이님이 2008-04-21 11:48에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
1594long varchar 타입 질문드립니다. [5]
이도희
2008-04-25
11136
1593DB21006E 명령문이 65535행을 넘을수.... [1]
배성수
2008-04-21
9902
1592DB2 트랜잭션 아이디 알아내는 법 [6]
조성환
2008-04-21
10738
1591SQL문장 단위 알아내는 법 [1]
조성환
2008-04-18
9813
1590프로시저 안에서 에러처리 다시 질문드립니다. [1]
이도희
2008-04-17
10693
1586이거 왜이럴까요?? [2]
김희섭
2008-04-16
10027
1585프로시저 안에서 exception 처리 [1]
이도희
2008-04-14
15248
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2022 DSN, All rights reserved.
작업시간: 0.085초, 이곳 서비스는
	PostgreSQL v13.3으로 자료를 관리합니다