테이블을 조회가 데이타는 2가지 경우입니다.
한줄의 레코드로 한건만 조회하는 경우와 여러줄의 레코드로 여러건을 조회하는 경우죠.
Pro*C에서 한건만 조회하는 경우는
단순히 SELECT문으로만 처리하면 되고
여러건을 조회하는 경우에는 SELECT을 CURSOR와 FETCH를 조합해서 처리해야 됩니다.
이번에는 단건 처리만 간단하게 볼게요.
int main() {
EXEC SQL BEGIN DECLARE SECTION;
char v_name[10+1];
char v_code[5+1];
EXEC SQL END DECLARE SECTION;
EXEC SQL AT :con_name
SELECT dat_name,dat_code INTO :v_name,:v_code FROM T_DATA where rownum = 1;
if(SQLCODE != 0){
printf("select Fail [%d][%.*s]\n",SQLCODE,SQLERR_LEN-1,SQLERR_MSG);
return -1;
}
else{
printf("select Success\n");
}
printf("DAT_NAME : [%s]\n",v_name);
printf("DAT_CODE : [%s]\n",v_code);
return 0;
}
* 결과
DAT_NAME : [TEST_ONE ]
DAT_CODE : [DT001]
단건을 위해 강제로 rownum = 1 이라고 지정해서 샘플을 만들었어요.
이거 말고 단건을 조회하는 경우가 많을거에요.
어떤 조회에 맞는 건수를 조회하는 경우도
몇건이라는 하나의 값을 보여주기 때문에 단건이라고 할수 있죠.
T_DATA 테이블에서 dat_name과 dat_code 필드를 조회하는 SELECT문입니다.
dat_name과 dat_code를 받아주는 변수가 필요합니다.
SQL문에 사용될 변수는
반드시 BEGIN DECLARE SECTION와 END DECLARE SECTION사이에
선언되어 있어야 됩니다.
EXEC SQL BEGIN DECLARE SECTION;
char v_name[10+1];
char v_code[5+1];
EXEC SQL END DECLARE SECTION;
INTO 키워드 뒤에 필드 순서대로 해당 변수들을 :(콜론)과 함께 기입하면 됩니다.
SELECT dat_name,dat_code INTO :v_name,:v_code FROM T_DATA
SELECT 뒤에는 반드시 쿼리 수행이 정상인지 체크하는 로직을 넣어주셔야 됩니다.
SQLCODE가 0이 아니면 오류거나 결과 데이타가 없는 경우입니다.
자세한 에러처리는 Pro*C 에러처리에 대한 이전 포스팅을 참고하시면 될거에요.
if(SQLCODE != 0){
printf("select Fail [%d][%.*s]\n",SQLCODE,SQLERR_LEN-1,SQLERR_MSG);
return -1;
}
else{
printf("select Success\n");
}
감사합니다.
반응형
'IT > PROGRAM' 카테고리의 다른 글
Go Lang 설치하기 개발환경구성 샘플 테스트. 리눅스 CentOS7 (0) | 2022.09.30 |
---|---|
VirtualBox 윈도우 10 설치 . Win10 ISO 파일 (0) | 2022.09.29 |
Pro*C 컴파일 과정과 Makefile 만들기 (0) | 2022.09.28 |
Pro*C 에러 처리 . SQLCA (0) | 2022.09.27 |
Pro*C 에러 처리 . WHENEVER (1) | 2022.09.26 |
댓글