Oracle

게시글 보기
작성자 유건데이타 등록일 2015-05-18
제목 PROC사용 중에 사용된 SQL 문장 알아내기.(SQLGLS()사용법)
pro*c program을 실행중에 실행이 되었던 sql문의 문장이
무엇인지 알고 싶을 경우가 있다. 이때에 sqlgls() 함수를
사용하면 해결할수 있다.
이 함수는 가장 최근에 parse된 sql문장과 그 문장의 길이,
그리고 sql문이 어떤 명령어인지(이내용은 뒷부분에 자세히
언급이된다.)에 대한 정보를 알려 준다.
이 함수는 SQLLIB의 한부분으로 이다.

<<함수의 사용위치>>
static SQL일 경우는 sql문뒤, dynamic sql method1인
경우는 execute뒤, method2,3,4인 경우는 prepare뒤에
사용할 수 있다.

<>
int sqlgls(char sqlstm, size_t stmlen,size_t *sqlfc)

--sqlstm
sql문장을 return받을 character buffer이다.
이것은 사용되기 전에 정적으로 선언을 해서 할당을 하던지
동적으로 memory를 allocate해 두어야 한다.
--stmlen
long integer로서 sqlgls()가 호출되기 이전에 sqlstm buffer
의 크기를 setting해 놓아야 한다. 그러면 sqlgls()가
sqlstm에 sql문장을 채워 넣은후에 나머지는 blank로 padding하고
sqllen에는 sql문장의 길이의 값이 들어가게 된다.(이때의 길이는
blank가 제거된 길이이다.)
--sqlfc
long integer이고 sql function code가 들어있다.
이 코드 값은 가령 01번이면 CREATE TABLE, 03번이면 INSERT,
04번이면 SELECT와 같이 해당 작업이 무엇인지를 알수 있다.
(자세한 CODE값은 MANUAL을 참조하기 바란다.)

return값>>
이 함수는 int값을 return한다. 만약 error가 발생했을 경우에는
1을 error 가 없이 끝난경우는 0을 return한다. 만약 error가
발생했을 경우는 stmlen값은 0으로 된다.

기타>>
1. sqlgls()함수는 다음 명령어에 대한 문장은 얻을수 없다.
CONNECT, COMMIT, ROLLBACK, RELEASE, FETCH
2. 이 함수를 사용한 예제는 demo directory에 sqlvcp.pc를
참조할수 있다.
Comment
등록된 코멘트가 없습니다.