본문 바로가기

Oracle - Forms/Forms 문법 관련

Oracle Forms - 문법 - PRE-QUERY

728x90

1.

 

BLOCK XXPO_PRICE_PO_LINES_V의 EVENT에 :SYSTEM.TRIGGER_ITEM이 적용된 부분을 PRE-QUERY TRIGGER를 적용 시킨다.

PRE-QUERY TRIGGER는 QUERY PROCESSING 수행 전에 수행되며 BLOCK LEVEL 이상에서 선언해 주어야 한다.

즉, 한번의 QUERY 로 10개의 레코드를 가져온다고 가정할 때, PRE-QUERY TIGGER는 QUERY 수행 전 1번 수행 된다.

EX) PRE-QUERY TRIGGER에 적당한 SQL문을 입력함으로써 [조회 조건 입력] KEY를 눌렀을 때와 같은 제한적인 QUERY를 수행 가능하다.

 

2.

XXPO_PRICE_PO_LINES_V의 SPEC에 BLOCK LEVEL에서 사용한 TRIGGER들을 PROCEDURE화 해서 BLOCK LEVEL에서 어떤 TRIGGER들을 사용하였는지 보기 쉽게 정리 한다.

 

 

3.

XXPO_PRICE_PO_LINES_V 의 PROCEDURE EVENT에 매개변수를 설정하여 1에서 넘어온 값을 IF ELSIF로 분기 처리하여 각 PROCEDURE가 실행되도록 설정.

그 중 P_TRIGGER_NAME이 PRE-QUERY일 경우 SPEC에 설정한 PRE_QUERY가 실행되도록 설정

 

4. 

 

설명 :

1번에서 설명 추가하자면

PRE-QUERY TRIGGER는 QUERY PROCESSING 수행 전에 수행되며 BLOCK LEVEL 이상에서 선언해 주어야 한다고 했다.

따라서

PROCEDURE PRE_QUERY는

BLOCK XXPO_PRICE_PO_LINES_V를 APP_ORDER_BY.RESET통해 ORDER_BY를 RESET해주고

APP_ORDER_BY.APPEND를 통해 ORDER BY LINE_NUM을 추가 해준다.

그 후에

CONTROL 블록의 ITEM값들에 오른쪽 각각의 값들을 할당.

반응형