SQLJ 문 구문

SQLJ 문은 SQLJ 파일에서 Java™ 명령문과 혼용할 수 있습니다.

Java의 임베디드 SQL 문

SQLJ의 정적 SQL 문은 SQLJ 절에 표시됩니다. SQLJ 변환기는 토큰 #sql로 시작해서 세미콜론으로 끝나는 특성을 가진 SQLJ 절을 인식합니다.

가장 단순한 SQLJ 절은 토큰 #sql 다음에 중괄호로 싼 SQL 문이 오도록 구성된 실행 가능 절입니다. 예를 들어, 다음 SQLJ 절은 Java 문이 유효하게 표시될 수 있는 곳이면 어디에나 있을 수 있습니다. SQLJ 절은 MYTABLE 테이블의 행을 모두 삭제하기 위해 사용합니다.

   #sql { DELETE FROM MYTABLE };

Java의 호스트 변수

임베디드 SQL 문의 인수는 SQL 문에 나타나는 Java 변수인 호스트 변수를 통해 전달됩니다. 호스트 변수는 다음과 같이 세 파트로 나누어집니다.

Java ID는 SQLJ 절을 바꾸기 위해 생성되는 Java 코드에 여러 번 나타날 수 있습니다.

다음 조회는 호스트 변수 :x(Java 변수), 필드 또는 조회가 들어 있는 범위에 표시되는 매개변수 x를 포함합니다.

   SELECT  COL1,  COL2  FROM  TABLE1  WHERE  COL3  <  :x

복합 SQL로 지정되는 호스트 변수는 모두 기본적으로 입력 호스트 변수입니다. 출력 호스트 변수로 표시할 호스트 변수 앞에는 매개변수 모드 ID OUT 또는 INOUT을 지정해야 합니다. 예제:

   #sql {begin compound atomic static 
        select count(*) into :OUT count1 from employee;
        end compound}

SQL 토큰

SQLJ 실행 가능 절에서 중괄호 안에 표시되는 토큰은 SQL 토큰입니다(단, Java 변수에 해당하는 호스트 변수는 제외). 호스트 변수 앞에는 콜론 문자(:)가 붙습니다. SQL 토큰은 SQLJ 실행가능 절의 중괄호 밖에서는 발생하지 않습니다.

예를 들어, 다음 Java 메소드는 SQL 테이블에 인수 값을 삽입합니다. 메소드 본문은 호스트 변수 x, yz를 포함하는 SQLJ 실행 가능 절로 구성됩니다.

   void m (int x, String y, float z) throws SQLException 
   {
       #sql { INSERT INTO TAB1 VALUES (:x, :y, :z) };
   }

루프에서 정적 SQL 문을 초기화하지 마십시오. 각 정적 SQL 문에 대해 하나의 명령문이 있어야 합니다. 예를 들어, 다음 코드 스니펫은 올바르지 않습니다.

   for( int i=0; i<2; i++ ){
      #sql [ctx] itr[i] = { SELECT id, name FROM staff };
   }

위의 코드 스니펫을 다음 명령문으로 바꾸십시오.

   int i=0;
   #sql [ctx] itr[i] = { SELECT id, name FROM staff };
   i=1;
   #sql [ctx] itr[i] = { SELECT id, name FROM staff };

일반적으로 SQL 토큰은 대소문자를 구분해서 사용하지 않으므로(단, 큰따옴표 표시로 분리된 ID는 제외) 대문자, 소문자 또는 혼합 문자로 쓸 수 있습니다. 그러나 Java 토큰은 대소문자를 구분합니다. SQLJ 도움말 항목 예제에서 명확하게 하기 위해 대소문자를 구분하지 않는 SQL 토큰은 대문자이고 Java 토큰은 소문자나 혼합 문자입니다. 소문자 null은 Java 널값을 표시하기 위해 사용되고, 대문자 NULL은 SQL 널값을 표시하기 위해 사용됩니다.

관련 태스크
SQLJ 파일 작성
Java 프로젝트에 SQLJ 지원 추가
Java 프로젝트에서 SQLJ 지원 제거
피드백
(C) Copyright IBM Corporation 2000, 2005. All Rights Reserved.