[Pro*c]동적 SQL 문장 만들기
글쓴이: Fe.head / 작성시간: 수, 2005/07/06 - 4:23오후
나중에 제가 잊어 버릴까봐 여기에 써놓습니다.^^
SELECT
select 는 단일 문장이 안되는듯합니다.
그래서 cursor 를 썼습니다.
// SQL문 만들기
char select_sql[512];
char * kind_of_tel = "home_tel";
char * kind_of_tel_flag = "home_tel_flag";
sprintf(select_sql,"SELECT name, %s, %s FROM member_tbl where regn_no = :regn_no AND rownum <= :n",
kind_of_tel, kind_of_telflag);
...
// SELECT
char tel_no[20];
char old_tel_flag[2];
char name[20];
char * regn_no = "7709090000000";
long count = 1;
EXEC SQL PREPARE S FROM :select_sql; // 전방 선언(?)
EXEC SQL DECLARE memb_cursor CURSOR FOR S; // 커서 선언
EXEC SQL OPEN memb_cursor USING :name, :regn_no, :count; // 커서 열기
/* select_sql에 있는 문자 ":regn_no" 와 변수 :regn_no는 거의 관계가 없으며 단지 변수가 들어갈 자리라는것만 나타낸다. 고로 변수명과 꼭 일치시킬 필요 없다.
여기 예제에서는 ":n" 과 :count 과 대칭을 이루나 명칭은 서로 틀리다.
*/
EXEC SQL FETCH memb_cursor INTO :tel_no, :old_tel_flag;
// 에러처리및 데이터 처리
....
EXEC SQL CLOSE memb_cursor;
UPDATE, DELETE, INSERT... 등등.
char update_sql[512];
char *kind_of_telflag = "home_tel_flag";
// SQL문 만들기
sprintf(update_sql,
"UPDATE member_tbl "
"SET %s = 'N', CHG_DATE = SYSDATE"
"WHERE REGN_NO = :regn_no",
kind_of_telflag);
....
char *regn_no = "7709090000000";
EXEC SQL PREPARE S FROM :update_sql; // 전방 선언(?)
EXEC SQL EXECUTE S USING :regn_no; // SQL문 실행
/* update_sql에 있는 문자 ":regn_no" 와 변수 :regn_no는 거의 관계가 없으며 단지 변수가 들어갈 자리라는것만 나타낸다. 고로 변수명과 꼭 일치시킬 필요 없다.
*/
// 에러처리및 데이터 처리
....
Forums:


댓글 달기