본문 바로가기
IT/PROGRAM

Pro*C . 한줄 단건만 조회하는 select 예제

by SidePower 2022. 9. 29.

 

테이블을 조회가 데이타는 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");
}

 

감사합니다.

반응형

댓글