DELETE FROM문

DELETE FROM 문은 검색 조건에 기초하여 외부 데이터베이스의 테이블에서 행을 삭제합니다.

구문

WHERE 절 표현식이 TRUE로 평가하는 모든 행이 TableReference로 식별된 테이블에서 삭제됩니다.

각 행이 조사되고 변수는 현재 행의 지점으로 설정됩니다. 일반적으로 WHERE 절 표현식은 이 변수를 사용하여 열 값에 액세스하므로 컨텐츠에 따라 행이 보유되거나 삭제됩니다. 변수는 CorrelationName으로 참조되거나 AS절이 없을 경우 TableName으로 참조됩니다.

테이블 참조

테이블 참조는 메시지 트리를 참조하는 데 사용된 필드 참조의 특수한 경우입니다. 항상 "Database"라는 단어로 시작하고 다음 사항을 포함할 수 있습니다.
  • 테이블 이름만
  • 스키마 이름 및 테이블 이름
  • 데이터 소스 이름(즉, 데이터베이스 인스턴스 이름), 스키마 이름 및 테이블 이름
각 경우에 이름은 직접 지정하거나 괄호({...})로 묶인 표현식으로 지정할 수 있습니다. 직접 지정된 데이터 소스, 스키마 또는 테이블 이름은 이름이 대체될 수 있습니다. 즉, 사용된 이름이 알려진 이름으로 선언된 경우 이름 자체보다 선언된 이름의 값이 사용됩니다(DECLARE문 참조).

스키마 이름이 지정되지 않은 경우 브로커 데이터베이스 사용자에 대한 디폴트 스키마가 사용됩니다.

데이터 소스 이름을 지정하지 않은 경우 노드의 데이터 소스 속성에서 지정한 데이터베이스가 사용됩니다.

WHERE 절

WHERE 절 표현식은 임의 결합으로 브로커의 연산자와 기능 중 하나를 사용할 수 있습니다. 표현식은 테이블의 열, 메시지 필드 및 선언된 변수나 상수를 나타낼 수 있습니다.

그러나 브로커는 표현식을 조사하고 데이터베이스에서 전체 표현식을 평가할 수 있는지 여부를 결정하여 WHERE 절 표현식을 처리합니다. 전체 표현식을 평가할 수 있는 경우, 데이터베이스에 제공됩니다. 데이터베이스에서 평가할 수 있으려면, 데이터베이스에서 지원하는 함수와 연산자만을 사용해야 합니다.

그러나 WHERE 절은 SELECT를 포함하여 선언된 메시지 필드, 상관 이름 및 기타 선언된 변수나 범위 안의 상수를 나타낼 수 있습니다.

전체 표현식을 데이터베이스에서 평가할 수 없는 경우, 브로커는 맨 위 레벨 AND 연산자를 찾아 각 부속 표현식을 조사합니다. 그런 다음 평가할 수 있는 서브 표현식을 데이터베이스에 제공하려고 시도하며, 브로커가 나머지를 평가하도록 둡니다. 다음 두 가지 이유로 이러한 상황을 인식해야 합니다.
  1. 외관상 WHERE절 표현식에 대한 사소한 변경사항은 성능에 많은 영향을 미칠 수 있습니다. 사용자 추적을 조사하여 데이터베이스에 제공된 표현식의 정보를 판별할 수 있습니다.
  2. 일부 데이터베이스의 기능은 브로커의 기능과는 다른 미묘한 작동 차이를 나타냅니다.

오류 핸들링

삭제 조작 중 오류가 발생할 수 있습니다. 예를 들면, 데이터베이스가 작동할 수 없습니다. 이러한 경우 예외가 발생합니다(노드에서 throw exception on database error 등록 정보를 FALSE로 설정한 경우 제외). 이 예외는 적절한 SQL 코드, 상태, 고유 오류 및 오류 텍스트 값을 설정하고 오류 핸들러로 처리할 수 있습니다(DECLARE HANDLER 문 참조).

데이터베이스 오류 처리에 대한 자세한 정보는 데이터베이스 상태 캡처를 참조하십시오.

다음의 예는 dataSource 등록 정보가 구성되었고 식별하는 데이터베이스에 ACCOUNTNO 열이 있는 SHAREHOLDINGS라는 테이블이 있다고 가정합니다.
DELETE FROM Database.SHAREHOLDINGS AS S
       WHERE S.ACCOUNTNO = InputBody.AccountNumber;

그러면 ACCOUNTNO 열(테이블 내)의 값이 메시지의 AccountNumber 필드에 있는 값과 동일한 경우 SHAREHOLDINGS 테이블에서 모든 행이 제거됩니다. 테이블에서 0개, 1개 또는 그 이상의 행이 삭제될 수 있습니다.

다음 예는 계산된 데이터 소스, 스키마 및 테이블 이름의 사용을 표시합니다.
-- Declare variables to hold the data source, schema, and table names and
-- set their default values
DECLARE Source CHARACTER 'Production';
DECLARE Schema CHARACTER 'db2admin';
DECLARE Table  CHARACTER 'DynamicTable1';

-- Code which calculates their actual values comes here

-- Delete rows from the table
DELETE FROM Database.{Source}.{Schema}.{Table} As R WHERE R.Name = 'Joe';
관련 개념
ESQL 개요
관련 태스크
ESQL 개발
관련 참조
구문 다이어그램: 사용 가능한 유형
ESQL문
주의사항 | 등록상표 | 다운로드 | 라이브러리 | 지원 | 피드백
Copyright IBM Corporation 1999, 2006 마지막 갱신 날짜: 2006/08/21
ak04990_