TECH
QUESTION
자주하는 질문답변 입니다.
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 | |||
---|---|---|---|
등록된 코멘트가 없습니다. |