반응형
니미.. 이제 살다살다 Proc까지 알아야 하나.. 하하.
요즘 참.. 살기 힘들다. 날 너무 힘들게 하는군~ 하지만 버텨야지 어떻하겠냐.
딴 방법이 생길때 까지.... 슬픈 현실이다.
각설하고..
왜 Proc를 사용하느냐.. 이딴건 개나 줘버리고.
그냥 DB랑 하는 일들 sql문을 쉽게 날리고 싶어서 쓴다고 치자.
test.pc로 맨들어서 컴파일 하면 test.c가 맨들어지고 얘를 또 컴파일하면 test.o가 맨들어진다.
C와 비스므리하게 되어 있다.
변수 쓸라면 선언해야 하고 if, for, while 다 있다.
sql변수 선언은 구역선하고 해야 한다.
이런식으로..
EXEC SQL BEGIN DECLARE SECTION;
int id;
varchar name[20];
char sex[1];
EXEC SQL END DECLARE SECTION;
varchar쓸라면 좀 그지같다. 길이를 정해줘야 한단다.
strcpy(name.arr, "scott");
name.len = strlen(name.arr);
뭐 이렇게 해야 한다고 한다.
쿼리 날려서 값 받아서 변수에 담기
INTO :var 이렇게 가져온다.
EXEC SQL select id, sex INTO :id, :sex FROM emp WHERE name = :name;
이렇게 하면 조회한 값 넣을 수 있다.
sqlca란게 있다.
EXEC SQL INCLUDE sqlca;
이렇게 대가리 부분에 적어서 첨부해줘야 한다.
요걸 하면은 조회한 것의 결과값을 알 수 있다. 데이터를 말 하는게 아니고 .. 그 결과.. 에라 그냥 그래.
if (sqlca.sqlcode != 0 ) {
}
이런식으로 쓸 수 있다.
0이 아니면 에러가 발생한 거야.
코드값이 뭔지 알고 싶으명 명령어를 이렇게 날려보면 나온단다.
> oerr ora 에러코드값
여러건의 데이터를 처리할려면 커서를 쓰자.
EXEC SQL DECLARE t_cursor CURSOR FOR
select name from emp;
EXEC SQL OPEN t_cursor;
for(;;) {
EXEC SQL FETCH t_cursor
INTO :name;
printf("%S", name);
}
EXEC SQL CLOSE t_cursor;
ProC가 대충 이렇다..ㅡ.ㅡ 끝.
잠와죽긋네..
요즘 참.. 살기 힘들다. 날 너무 힘들게 하는군~ 하지만 버텨야지 어떻하겠냐.
딴 방법이 생길때 까지.... 슬픈 현실이다.
각설하고..
왜 Proc를 사용하느냐.. 이딴건 개나 줘버리고.
그냥 DB랑 하는 일들 sql문을 쉽게 날리고 싶어서 쓴다고 치자.
test.pc로 맨들어서 컴파일 하면 test.c가 맨들어지고 얘를 또 컴파일하면 test.o가 맨들어진다.
C와 비스므리하게 되어 있다.
변수 쓸라면 선언해야 하고 if, for, while 다 있다.
sql변수 선언은 구역선하고 해야 한다.
이런식으로..
EXEC SQL BEGIN DECLARE SECTION;
int id;
varchar name[20];
char sex[1];
EXEC SQL END DECLARE SECTION;
varchar쓸라면 좀 그지같다. 길이를 정해줘야 한단다.
strcpy(name.arr, "scott");
name.len = strlen(name.arr);
뭐 이렇게 해야 한다고 한다.
쿼리 날려서 값 받아서 변수에 담기
INTO :var 이렇게 가져온다.
EXEC SQL select id, sex INTO :id, :sex FROM emp WHERE name = :name;
이렇게 하면 조회한 값 넣을 수 있다.
sqlca란게 있다.
EXEC SQL INCLUDE sqlca;
이렇게 대가리 부분에 적어서 첨부해줘야 한다.
요걸 하면은 조회한 것의 결과값을 알 수 있다. 데이터를 말 하는게 아니고 .. 그 결과.. 에라 그냥 그래.
if (sqlca.sqlcode != 0 ) {
}
이런식으로 쓸 수 있다.
0이 아니면 에러가 발생한 거야.
코드값이 뭔지 알고 싶으명 명령어를 이렇게 날려보면 나온단다.
> oerr ora 에러코드값
여러건의 데이터를 처리할려면 커서를 쓰자.
EXEC SQL DECLARE t_cursor CURSOR FOR
select name from emp;
EXEC SQL OPEN t_cursor;
for(;;) {
EXEC SQL FETCH t_cursor
INTO :name;
printf("%S", name);
}
EXEC SQL CLOSE t_cursor;
ProC가 대충 이렇다..ㅡ.ㅡ 끝.
잠와죽긋네..
반응형
댓글