본문 바로가기
학부 전공/DB

SQL의 시스템 관점(1 of 2) -1

by 장어진 2021. 6. 19.

SQL2에서 Embedded SQLEXEC를 코드의 맨 앞에 붙이도록 표준화가 되어있다. C언어로 넘겨 받는 변수들은 밑에서 보는 것 처럼 beginend안에 있어야한다.

(표준, 없어도 알아먹긴 함)

EXEC SQL BEGIN DECLARE SECTION;

char **;

EXEC SQL END DECLARE SECTION;

 

위 변수를 C에서 사용하려고 하면 printf("%s\n", studioName); 이처럼 C에서 사용하던 그대로 사용해도 된다. 하지만 SQL에서 사용하려고 하면 변수앞에 :을 붙여주어야한다. > :변수

위와 같이 함수 밖에서 글로벌 변수로 사용하건, 함수 안에서 사용하는 지역변수건 상관없다고 한다.

 

Error Handling에서 옛날에는 SQLCODE SQLSTATE를 사용했는데 요즘은 SQLCA를 사용한다고 한다. sqlca 변수를 사용하면 되는데 sqlca는 스트럭처로 sqlcode정보나 sqlstate정보 둘 다 들어가 있다고 한다. 항상 sql문장이 실행되고 나면 sqlca문장이 만들어지는데 sqlcodesqlstae부분을 통해 에러를 알 수있다. sqlcode0이면 성공, sqlcode가 양수면 warning, sqlcode가 음수면 Error가 된다. sqlstate의 경우 00 000이면 성공 01 000warning, 02 000 이면 데이터가 없다를 뜻한다. 이 코드는 DB서버마다 다 다르기 때문에 확인작업은 필요하다. 위 값들은 표준화되어있는 느낌으로 쓰이기는 한다. 이를 우리가 직접 조사해서 사용하는 것이 아니라 매크로를 지정해서 ERROR면 뭐 WARNING이면 뭐 이런 것을 선언해둘 수 있다. 예시로

EXEC SQL WHENEVER SQLERROR STOP;

EXEC SQL WHENEVER SQLWARNING SQLPRINT;

이런 식으로 사용한다.  

 

Cursor라는 것도 사용할 수 있다. 이는 파일이 있을 때 여러줄이 있을테니 한 줄을 읽고 저장하고 읽고 저장하고의 방식으로 생각하면 이해하기 쉬울 것이다. 사용법은 맨처음에 커서를 선언하고 오픈과 close사이에서 하나씩 읽는 방식이다. 밑에 실제 코드를 첨부하였다.

 

728x90

'학부 전공 > DB' 카테고리의 다른 글

데이터베이스 요약  (0) 2021.06.23
SQL의 시스템 관점(1 of 2) - 2  (0) 2021.06.19
SQL - 제약과 트리거 2  (0) 2021.06.19
SQL - 제약과 트리거 1  (0) 2021.06.19
SQL - Index & View Definition  (0) 2021.06.19