SQL에 대한 add 고려사항
SQL 조회 언어의 컨텍스트에서 add 문은 레코드 또는 레코드 세트를 데이터베이스에 추가합니다.
EGL은 레코드 변수의 키 필드에 있는 값을 기반으로 정보를 추가합니다.
EGL은 EGL add 문에 있는 SQL 레코드 변수의 값과 특성을 기반으로 생성한 코드에 SQL INSERT 문을 작성합니다. 이 암시적 SQL 코드에 대한 자세한 정보는 SQL 데이터 액세스의 내용을 참조하십시오. 또는 #sql 지시문을 사용하여 자체 임베디드 SQL INSERT 문을 쓸 수도 있습니다(sql 지시문 참조).
add 문이 단일 SQL 레코드 변수를 지정하는 경우, 이 명령문은 데이터베이스에 단일 행을 작성합니다. 또한 SQL 레코드 변수의 동적 배열을 지정할 수도 있습니다. 이 경우 명령문은 배열의 각 멤버에 대해 하나의 행을 작성합니다.
구문

- SQLRecordVariable
- 데이터베이스에 추가할 단일 데이터 행을 포함하는 메모리 영역을 참조합니다.
- with #sql{ sqlStatement }
- 숙련된 SQL 프로그래머는 자신의 SQL INSERT 문을 임베드하여 EGL이 생성하는 SQL 코드를 대체할 수 있습니다(sql 지시문 참조). #sql과 왼쪽 중괄호 사이에 공백을 남기지 마십시오.
- SQLDynamicArray
- SQL 레코드의 동적 배열 이름입니다. 요소 특정 키 값이 지정하는 각 위치에 데이터베이스에 요소가 삽입됩니다. 첫 번째 오류가 발생할 때 또는 모든 요소가 삽입되었을 때 조작이 중지됩니다.
- Atomic
- Atomic 및 Atomic(no)가 지원됩니다.
- Atomic은 모든 행이 성공적으로 삽입되어야 하며, 그렇지 않으면 복수 행 삽입이 실패함을 의미합니다. 기본값입니다.
- Atomic(no)은 행 세트 내의 개별 행이 성공적으로 삽입되거나 거부될 수 있음을 의미합니다. GET DIAGNOSTICS를 사용하여 성공하지 못한 행을 판별할 수 있습니다. SQL에 대한 get diagnostics 고려사항을 참조하십시오.
- 참고:
- 로깅 모드가 아닌 경우 Informix®에서 add Atomic은 지원되지 않으며, 여전히 비원자적 방법으로 추가됩니다.
- add Atomic(no)은 데이터베이스에 따라 다르게 동작합니다. Oracle, DB2® for i5/OS™, SQL Server는 실패가 발생한 후 행을 삽입하지 않습니다. 다른 데이터베이스는 실패한 행을 제외한 모든 행을 삽입합니다.
제한사항: 여러 행의 경우 add 문은 명시적 SQL문을 지원하지 않습니다.
암시적 SQL INSERT 문
INSERT INTO tableName
(column01, ... columnNN)
values (:recordItem01, ... :recordItemNN)
레코드의 키 값은 테이블에서 데이터의 논리적 위치를 판별합니다. 데이터베이스 관리 시스템은 SQL 테이블 정의 및 데이터베이스 규칙에 따라 키가 없는 레코드를 처리합니다. 레코드 변수의 기반이 되는 레코드 파트는 레코드 필드를 데이터베이스 테이블의 열과 연관시킵니다. EGL은 이러한 연관을 사용하여 INSERT 문에서 값 지정을 판별합니다. 호스트 변수(SQL을 호스트하는 언어(이 예에서는 EGL)에서 정의된 변수)의 사용은 초기 콜론 문자로 표시됩니다. 자세한 정보는 호스트 변수의 내용을 참조하십시오.
레코드 필드를 읽기 전용으로 선언한 경우, 생성된 SQL INSERT 문에 해당 필드가 포함되지 않으며 데이터베이스 관리 시스템은 관련된 SQL 테이블 열의 값을 열 정의 시 지정된 기본값으로 설정합니다.
예제
다음 예제는 add 문을 표시합니다.
if (userRequest == "A")
try
add record1;
onException(sqlEx SQLException)
myErrorHandler(12);
endend
try
add employees;
onException(sqlEx SQLException)
sysLib.rollback();
end
오류 조건
- #sql 지시문에서 INSERT가 아닌 유형의 SQL 문을 지정하는 경우
- #sql 지시문에서 SQL INSERT 문의 필수 절을 모두 지정하지 않은 경우
- 다음과 같은 특성이 있는 SQL INSERT 문을 지정하는 경우(또는 EGL 코드가 암시적 SQL문을 생성하는 경우)
- 둘 이상의 SQL 테이블과 관련됨
- 모든 호스트 변수가 읽기 전용으로 선언됨
- 존재하지 않는 열 또는 관련된 호스트 변수와 호환되지 않는 열과 연관됨