GOLDILOCKS 는 SQL/PSM 을 지원합니다.
SQL/PSM 이란
1. 프로그래밍 언어 기능이 포함된 SQL 입니다.
2. 트랜잭션을 단위별로 수행할 수 있는 SQL 입니다.
3. 제어흐름, 예외처리, 지역변수, 커서의 절차적 이용을 위한 문법등을 표준화한 SQL 입니다.
4. SQL/PSM 은 PL/SQL 혹은 PL/pgSQL 과 비슷한 언어입니다.
SQL/PSM 기본구조
DECLARE 변수 선언; BEGIN 코드; [EXCEPTION 예외처리;] END; /
변수 선언 : GOLDILOCKS 에서 지원하는 데이터 타입을 작성할 수 있습니다.
코드 : SQL/PSM 을 작성합니다.
예외처리 : 코드 수행시 발생하는 예외처리를 작성합니다.
예시]
gSQL> set serveroutput on; gSQL> DECLARE 2 MOZI VARCHAR(10); 3 BEGIN 4 MOZI := 'GOLDILOCKS'; 5 DBMS_OUTPUT.PUT_LINE(MOZI); 6 END; 7 / GOLDILOCKS Anonymous PL block executed.
위 SQL/PSM 은 수행할 때마다 버퍼에서 동작되기 때문에 매번 작성하여야 합니다.
GOLDILOCKS 에서는 위 구문을 캡슐화하여 데이터베이스에 저장가능한 Stored Function, Stored Procedure 을 지원합니다.
Stored Function 구조, 사용법
CREATE [OR REPLACE] FUNCTION 함수명 [인수] RETURN 타입 {AS | IS} 변수선언; BEGIN 코드; RETURN 변수; [EXCEPTION 예외처리;] END; /
기본문법에서 객체로 저장할수 있는 CREATE FUNCTION 구문이 추가되었습니다.
인자를 받을 수 있습니다.
값을 반환할 수 있습니다.
예시]
gSQL> set serveroutput on; gSQL> CREATE OR REPLACE FUNCTION TISTORY 2 RETURN VARCHAR(10) AS 3 MOZI VARCHAR(10); 4 BEGIN 5 MOZI := 'GOLDILOCKS'; 6 RETURN MOZI; 7 END; 8 / Function created. gSQL> SELECT TISTORY FROM DUAL; TISTORY ---------- GOLDILOCKS 1 row selected.
Stored Procedure 구조, 사용법
CREATE [OR REPLACE] PROCEDURE 프로시져명 [인수] {AS | IS} BEGIN 코드; [EXCEPTION 예외처리;] END; /
기본문법에서 객체로 저장할 수 있는 CREATE PROCEDURE 구문이 추가되었습니다.
인자를 받을 수 있습니다.
값을 반환할 수 없습니다.
예시]
gSQL> SELECT * FROM MOZI; C1 C2 ---- ---- 1 1 1 rows selected. gSQL> CREATE OR REPLACE PROCEDURE TISTORY (NUM IN INTEGER) 2 AS 3 BEGIN 4 UPDATE MOZI SET C2=2 WHERE C1=NUM; 5 END; 6 / Procedure created. gSQL> CALL TISTORY (1); Procedure Call complete. gSQL> SELECT * FROM MOZI; C1 C2 ---- ---- 1 2 1 rows selected.
Nested Function, Nested Procedure 구조, 사용법
DECLARE 변수 선언; 함수; 프로시져; BEGIN 코드; [EXCEPTION 예외처리;] END; /
DECLARE 와 BEGIN 사이에 Function, Procedure 를 사용할 수 있습니다.
이 때 구문은 CREATE 와 / 를 뺀 나머지를 작성해 주면 됩니다.
예시]
gSQL> DECLARE 2 FUNCTION F_TISTORY 3 RETURN VARCHAR(10) AS 4 MOZI VARCHAR(10); 5 BEGIN 6 MOZI := 'GOLDILOCKS'; 7 RETURN MOZI; 8 END; 9 10 PROCEDURE P_TISTORY (NUM IN INTEGER) 11 AS 12 BEGIN 13 UPDATE MOZI SET C2=2 WHERE C1=NUM; 14 END; 15 BEGIN 16 DBMS_OUTPUT.PUT_LINE(F_TISTORY); 17 P_TISTORY(1); 18 END; 19 / GOLDILOCKS Anonymous PL block executed.
'Database > Goldilocks' 카테고리의 다른 글
[GOLDILOCKS] Global Secondary Index 개념 파악하기 (0) | 2018.06.07 |
---|---|
[GOLDILOCKS] goldilocks_data, goldilocks_home 디렉토리별 역할 알아보기 (0) | 2018.06.07 |
[GOLDILOCKS] 데이터베이스 구동 단계별 설명 및 방법 알아보기 (0) | 2018.05.31 |
[GOLDILOCKS] 이중화를 위한 cyclone 의 CDC 방식 알아보기 (0) | 2018.05.27 |
[GOLDILOCKS] CLONED, LIST, RANGE, HASH Sharding 테이블 만들어보기 (0) | 2018.05.26 |