[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:
댓글 달기