PSM SQL References

ALTER FUNCTION

기능

Function을 recompile 한다.

구문

<alter function statement> ::=
    ALTER FUNCTION function_name COMPILE
    ;

사용 범위 및 접근 권한

<alter function statement> 구문을 수행하려면 사용자에게 다음 권한 중 하나가 있어야 한다.

구문 규칙 및 파라미터

설명

지정된 schema-level function을 recompile 한다.

사용 예

gSQL> ALTER FUNCTION FUNC1 COMPILE;

Function altered.

호환성

SQL 표준에서는 CREATE를 수행할 때 지정된 characteristic들을 변경하는 구문이고, GOLDILOCKS에서는 function의 plan을 다시 생성하는 구문이다.

SQL 표준 호환성

Feature ID

설명

지원 여부

F381

Extended schema manipulation

O

참조

자세한 내용은 다음을 참조한다.

ALTER PACKAGE

기능

Package를 recompile 한다.

구문

<alter package statement> ::=
    ALTER PACKAGE package_name <package compile clause>
    ;

<package compile clause> ::=
    COMPILE [PACKAGE|SPECIFICATION|BODY]

사용 범위 및 접근 권한

<alter package statement> 구문을 수행하려면 사용자에게 다음 권한 중 하나가 있어야 한다.

구문 규칙 및 파라미터

설명

지정된 package를 recompile 한다.
Compile 된 package의 실행 code는 plan cache에 저장된다.

사용 예

ALTER PACKAGE PKG1 COMPILE;
Package altered.
ALTER PACKAGE PKG1 COMPILE PACKAGE;
Package altered.
ALTER PACKAGE PKG1 COMPILE BODY;
Package altered.

호환성

SQL 표준에서는 ALTER MODULE 구문이다.

참조

자세한 내용은 다음을 참조한다.

ALTER PROCEDURE

기능

Procedure를 recompile 한다.

구문

<alter procedure statement> ::=
    ALTER PROCEDURE proc_name COMPILE
    ;

사용 범위 및 접근 권한

<alter procedure statement> 구문을 수행하려면 사용자에게 다음 권한 중 하나가 있어야 한다.

구문 규칙 및 파라미터

설명

지정된 schema-level procedure를 recompile 한다.

사용 예

gSQL> CREATE OR REPLACE PROCEDURE PROC1( A1 INTEGER )
IS
BEGIN
  INSERT INTO T1 VALUES( A1 );
END;
/

ERR-01000(16409): Warning: Routine definition has compilation errors
ERR-HY000(17032): PSM compilation error : 
(1) at (5:15): ERR-17053: schema or table object does not exist
Procedure created.

gSQL> CALL PROC1(1);

ERR-HY000(17032): PSM compilation error : 
(1) at (5:15): ERR-17053: schema or table object does not exist

gSQL> CREATE TABLE T1( I1 INTEGER );

Table created.

gSQL> COMMIT;

Commit complete.

gSQL> ALTER PROCEDURE PROC1 COMPILE;

Procedure altered.

gSQL> COMMIT;

Commit complete.

gSQL> CALL PROC1(2);

Procedure Call complete.

gSQL> SELECT * FROM T1;

I1
--
 2

1 row selected.

호환성

SQL 표준에서는 CREATE를 수행할 때 지정된 characteristic들을 변경하는 구문이고, GOLDILOCKS에서는 procedure의 plan을 다시 생성하는 구문이다.

SQL 표준 호환성

Feature ID

설명

지원 여부

F381

Extended schema manipulation

O

참조

자세한 내용은 다음을 참조한다.

CALL Statement

기능

Schema level procedure나 function을 수행한다.

구문

<call statement> ::= 
    <sql call statement> | <odbc procedure call escape sequence>
    ;

<sql call statement> ::=
    CALL proc_name [ ( value_expr [ , value_expr ] .. ) ]  [ INTO { '?' | { host_param [ indicator_param ] } } ]

<odbc procedure call escape sequence> ::=
    '{' [ ? = ] CALL proc_name [ ( value_expr [ , value_expr ] .. ) ] '}'

사용 범위 및 접근 권한

<call statement> 구문을 수행하려면 사용자에게 다음 권한 중 하나가 있어야 한다

구문 규칙 및 파라미터

설명

명시된 인자들을 사용하여 schema level SQL procedure나 function을 실행한다.

<sql call statement> 형식 중에 function은 INTO 절 다음에 host variable 표현이나 dynamic bind parameter (?)를 사용하여 결과값을 반환한다.

<odbc procedure call escape sequence> 형식은 ODBC/ JDBC 등에서 PROCEDURE를 호출하기 위한 
표준 구문이며, GOLDILOCKS는 이 구문을 server에서 지원한다. (gsql 등의 tool에서도 사용 가능하다.)
Function은 앞에 assign 표현( ? = )을 사용하여 결과값을 반환한다.

사용 예

Call Procedure

gSQL> CREATE OR REPLACE PROCEDURE PROC1
(
  A1 INTEGER
)
IS
BEGIN
  DBMS_OUTPUT.PUT_LINE('A1=' || A1);
END;
/

Procedure created.

gSQL> \var v1 INTEGER;
gSQL> \exec :v1 := 123;
gSQL> CALL PROC1(:v1);
A1=123

Procedure Call complete.

Call Function

CREATE OR REPLACE FUNCTION FUNC1
(
  A1 INTEGER
)
RETURN INTEGER
IS
BEGIN
    return A1;
END;
/

Function created.


gSQL> \var v1 INTEGER;
gSQL> \var v2 INTEGER;
gSQL> \exec :v1 := 123;
gSQL> CALL FUNC1(:v1) INTO :v2;
Procedure Call complete.

gSQL> \print v2;
 V2
---
123

호환성

SQL 표준에서는 PROCEDURE에 대한 호출만 가능하여 [INTO] 절 이하를 정의하지 않고 있다.

CREATE FUNCTION

기능

Schema level function을 정의한다.

구문

<create function statement> ::= 
    CREATE [ OR REPLACE ] FUNCTION <function name> [ ( <parameter list> ) ]
       <return clause> 
       [ <function characteristics> ] 
       { IS | AS }  
       <item declaration>  
       BEGIN 
       <pl statement list> 
       END [ <function name> ]
    ; 

<parameter list> ::= 
      <parameter name> [ <parameter mode> ] <datatype> [ <parameter default> ] [ , ... ] 
 
<parameter mode> ::= 
      IN 
    | OUT 
    | IN OUT 
 
<parameter default> ::= 
      { := | DEFAULT } <value expression> 
 
<return clause> ::= 
      RETURN <datatype> 
    | RETURN TABLE ( <table function column list> ) 
 
<table function column list> ::=  
      <column name> <datatype> [ , ... ] 
 
<function characteristics> ::= 
      DETERMINISTIC 
    | AUTHID CURRENT_USER 
    | AUTHID DEFINER

사용 범위 및 접근 권한

<create function statement> 구문을 수행하려면 사용자가 다음 조건들을 만족해야 한다.

구문 규칙 및 파라미터

OR REPLACE

이미 function이 존재할 경우, 기존의 function을 새로운 function으로 대체한다.

function name

생성할 function의 이름으로써 스키마 내에서 고유한 이름이어야 한다.
schema_name.function_name과 같이 function이 속할 스키마를 정의할 수 있다. schema_name을 생략할 경우, 구문을 수행하는 사용자의 기본 스키마 이름이 사용된다.
function 이름의 길이는 128 바이트보다 작아야 한다.

parameter name

Function의 parameter 이름을 정의한다.
각 parameter 이름은 function 내에서 고유해야 한다.
즉, function의 parameter와 PL item은 동일한 이름을 가질 수 없다.
Parameter 이름의 길이는 128 바이트보다 작아야 한다.
하나의 function에서 사용할 수 있는 parameter의 최대 개수에는 제한이 없다.

parameter mode

각 parameter mode를 설정한다.
Parameter mode에는 IN, OUT, IN OUT이 있다.
Parameter mode를 명시하지 않을 경우, 기본 mode는 IN이다.

parameter default

Parameter의 기본값이다.
Parameter default가 명시된 parameter는 function 실행할 때 생략할 수 있다.
Parameter를 명시하지 않고 생략할 경우, parameter를 정의할 때 명시한 <value expression>을 기본값으로 가진다.
<value expression>의 datatype은 parameter의 datatype이어야 한다.
<parameter default>를 가진 parameter 이후에 정의되는 모든 parameter에는 <parameter default>가 있어야 한다.

return clause

Function의 반환 형태를 정의한다.
<return clause>에서는 다음과 같이 정의된다.

table function column list

Table function이 반환하는 결과 집합의 column 이름이다.
Column 이름의 길이는 128 바이트보다 작아야 한다.
Column 개수에는 제한이 없다.
각 column 이름은 <table function column list>에서 고유하다.
Column 이름은 parameter 및 declare item 이름과 동일할 수 있다.
<table function column list>에 정의된 column은 function의 PL block 내에서 참조할 수 없다.

function characteristics

Function 수행 옵션을 정의한다. 같은 항목에 대해서는 한 번만 기술해야 한다.

Item Declaration

Function 내부에서 사용될 로컬 변수 등의 item을 선언한다. 
PL block에서 선언가능한 모든 item들을 선언할 수 있다.

PL Stmt List

Function의 body 부분으로써 수행할 PL statement들을 나열한다. 
Function의 내부에는 '?'나 ':V1'과 같은 bind parameter를 사용할 수 없다.

설명

Schema-level SQL function을 정의한다. 생성된 function은 모든 expression에서 호출될 수 있다.
Function의 정의는 INFORMATION_SCHEMA의 ROUTINES 테이블에서 확인할 수 있다. Function의 parameter들에 대한 정의는 INFORMATION_SCHEMA의 PARAMETERS 테이블에서 확인할 수 있다.
관련 객체들이 존재하지 않아 function이 일시적으로 불완전해졌을 경우, ALTER FUNCTION 구문으로 plan 생성을 다시 시도해볼 수 있다.
생성된 function은 DROP FUNCTION 구문을 사용하여 제거할 수 있다.
Function의 최대 생성 개수에는 제한이 없으므로 저장 공간에 문제가 없는 한 계속 생성할 수 있다.

사용 예

gSQL> CREATE OR REPLACE FUNCTION FUNC1( A1 INTEGER, A2 INTEGER )
  RETURN INTEGER
  IS
    V1 INTEGER;
  BEGIN

    SELECT COUNT(*)
      INTO V1
      FROM T1
      WHERE T1.I1 >= A1 AND T1.I1 <= A2;

    RETURN V1;
  END;
  /

Function created.

호환성

SQL 표준에서는 OR REPLACE 절을 정의하지 않고 있다.

SQL 표준 호환성

Feature ID

설명

지원여부

T471

Result sets return value

X

T341

Overloading of SQL-invoked functions and SQL-invoked procedures

X

S023

Basic structured types

X

S241

Transform functions

X

S024

Enhanced structured types

X

T571

Array-returning external SQL-invoked functions

X

T572

Multiset-returning external SQL-invoked functions

X

S201

SQL routines on arrays

X

S202

SQL-invoked routines on multisets

X

T323

Explicit security for external routines

X

S231

Structured type locators

X

S232

Array locators

X

S233

Multiset locators

X

T041

Basic LOB data type support

X

S027

Create method by specific method name

X

T041

Basic LOB data type support

X

T324

Explicit security for SQL routines

O

T326

Table functions

O

T651

SQL-schema statements in SQL routines

X

T652

SQL-dynamic statements in SQL routines

O

T653

SQL-schema statements in external routines

X

T654

SQL-dynamic statements in external routines

X

T655

Cyclically dependent routines

X

T272

Enhanced savepoint management

X

T522

Default values for IN parameters of SQL-invoked procedures

O

B121

Routine language Ada

X

B122

Routine language C

X

B123

Routine language COBOL

X

B124

Routine language Fortran

X

B125

Routine language MUMPS

X

B126

Routine language Pascal

X

B127

Routine language PL/I

X

B128

Routine language SQL

O

B129

Routine language Ada: VARCHAR and NUMERIC support

X

참조

자세한 내용은 다음을 참조한다.

CREATE PACKAGE

기능

Package 내에서 사용될 public item들에 대한 spec을 정의한다.

구문

<create package statement> ::=
    CREATE [ OR REPLACE ]  
        PACKAGE package_name 
        [ <package_characteristics> ]
        { IS | AS }
       <item_declaration> 
    END
    ;

<package_characteristics> ::=
    AUTHID CURRENT_USER | AUTHID DEFINER

<item_declaration> ::=    <variable declaration> 
                        | <cursor declaration>
                        | <user-defined type declaration> 
                        | <function declaration> 
                        | <procedure declaration> 
                        | <user exception declaration>
                        | <cursor definition>

사용 범위 및 접근 권한

<create package statement> 구문을 수행하려면 사용자가 다음 조건들을 만족해야 한다.

구문 규칙 및 파라미터

OR REPLACE

이미 package가 존재할 경우, 기존의 package specification을 대체한다.

PACKAGE NAME

생성할 package의 이름이며, schema 내에서 유일한 이름이어야 한다. 
schema_name.package_name과 같이 package가 속할 스키마를 정의할 수 있다. schema_name을 생략할 경우, 구문을 수행하는 사용자의 기본 스키마 이름이 사용된다. 
Package 이름의 길이는 128 바이트보다 작아야 한다.

Package Characteristics

Package를 수행하는 옵션을 정의한다. 같은 항목에 대해서는 한 번만 기술해야 한다.

Item Declaration

Package 외부에서 접근 가능한 public 변수, type, 커서, 커서 변수, function spec, procedure spec을 선언한다. 
Package 내의 function과 procedure는 반드시 create package body 구문을 통해 정의되어야 한다. 
Package 내에서 SQL 없이 선언만 된 커서는 반드시 create package body 구문을 통해 정의되어야 한다. 
또한 package 내의 function, procedure, 커서의 argument와 반환 타입들은 body 구문 내에 정의된 것과 일치해야 한다.

설명

Schema-level package specification을 생성한다. 
생성된 package의 모든 public item은 다른 procedure/ function/ package/ anonymous block 들에 의해 참조될 수 있다.
Package 생성 정보는 DEFINITION_SCHEMA나 INFORMATION_SCHEMA의 MODULES 테이블에서 확인할 수 있다. 
Package 내의 공개된 각 procedure/ function 목록은 DEFINITION_SCHEMA나 INFORMATION_SCHEMA 의 ROUTINES 테이블에서 확인할 수 있다. 
Package 내의 공개된 각 procedure/ function의 parameter들에 대한 정의는 DEFINITION_SCHEMA나 INFORMATION_SCHEMA의 PARAMETERS 테이블에서 확인할 수 있다. 
공개되지 않은 procedure/ function은 MODULE_BODY 테이블에서 확인할 수 있다. 
Package 내의 procedure/ function 변수가 참조하는 object들의 정보가 일시적으로 불완전해졌을 경우, <alter package> 구문으로 recompile을 시도해 볼 수 있다.

사용 예

CREATE OR REPLACE PACKAGE PKG1
IS
  V1 INTEGER;
  PROCEDURE PROC1;
  FUNCTION FUNC1 RETURN INTEGER;
END;
/

Package created.

호환성

SQL 표준에서는 CREATE MODULE 구문이다.

참조

자세한 내용은 다음을 참조한다.

CREATE PACKAGE BODY

기능

Package 내에서 사용될 procedure/ function/ 커서들에 대한 정의를 생성한다.

구문

<create package body statement> ::=
    CREATE [ OR REPLACE ] PACKAGE BODY package_name 
    { IS | AS } 
       <item_declaration> 
       <cursor_definition> 
       <routine_definition>
    [ BEGIN <initialization part> ]
    END
    ;

<item_declaration> ::=    VARIABLE_DECLARATION 
                        | CURSOR_DECLARATION
                        | USER_DEFINED_TYPE_DEFINITION 
                        | FUNCTION_DECLARATION 
                        | PROCEDURE_DECLARATION  
                        | USER_EXCEPTION_DECLARATION

<routine_definition> ::= FUNCTION_DEFINITION
                       | PROCEDURE_DEFINITION

<initialization part> ::= <pl_stmt_list>

사용 범위 및 접근 권한

<create package body statement> 구문을 수행하려면 사용자가 다음 조건들을 만족해야 한다.

구문 규칙 및 파라미터

OR REPLACE

Package body가 이미 존재할 경우, 기존의 package body definition을 대체한다.

PACKAGE NAME

생성할 package body의 이름이며, package spec 생성에 사용된 동일한 이름을 사용해야 한다. schema 내에서 유일한 이름이어야 한다. 
schema_name.package_name 과 같이 package가 속할 스키마를 정의할 수 있다. schema_name을 생략할 경우, 구문을 수행하는 사용자의 기본 스키마 이름이 사용된다. 
Package 이름의 길이는 128 바이트보다 작아야 한다.

Item Declaration

Package body 내에서 사용할 PSM identifier들 (변수, type, 커서, function spec, procedure spec, exception 등)을 선언한다. 
Package spec 내에 선언된 routine들은 반드시 package body에서 정의되어야 한다. 
Package spec 내에서 SQL 없이 선언만 된 커서들은 반드시 package body에 정의되어야 한다. 
또한 package 내의 function, procedure, 커서의 argument 및 반환 타입들은 body 구문 내에 정의된 것과 일치해야 한다.

Initialization Part

Package instance 생성 과정에서 내부 변수등의 초기화를 위해 한 번만 수행되는 구문들을 기술한다.

설명

Schema-level package body를 생성한다. 
생성된 package body의 모든 private item은 다른 procedure/ function/ package/ anonymous block 들에 의해 참조될 수 없고 해당 package body 내에서만 사용된다.
Package body의 생성 정보는 DEFINITION_SCHEMA나 INFORMATION_SCHEMA의 MODULE_BODY 테이블에서 확인할 수 있다. 
Package body 내의 각 private item들의 목록은 DEFINITION_SCHEMA나 INFORMATION_SCHEMA에서 확인할 수 없다. 
Package 내의 procedure/ function/ 변수가 참조하는 object들의 정보가 일시적으로 불완전해졌을 경우, <alter package body> 구문으로 recompile을 시도해 볼 수 있다.
생성된 package body는 <drop package>나 <drop package body> 구문으로 삭제할 수 있다.

사용 예

CREATE OR REPLACE PACKAGE PKG1
IS
  V1 INTEGER;
  PROCEDURE PROC1;
  FUNCTION FUNC1 RETURN INTEGER;
END;
/

Package created.

CREATE OR REPLACE PACKAGE BODY PKG1
IS
  FUNCTION FUNC1 RETURN INTEGER
  IS
  BEGIN
      RETURN V1;
  END;

  PROCEDURE PROC1
  IS
  BEGIN
      IF V1 IS NULL
      THEN
          V1 := 10;
      ELSE
          V1 := V1 + 10;
      END IF;
  END;

END;
/

Package created.

호환성

SQL 표준에는 정의되어 있지 않다.

참조

자세한 내용은 다음을 참조한다.

CREATE PROCEDURE

기능

Schema-level procedure를 정의한다.

구문

<create procedure statement> ::=
      CREATE [ OR REPLACE ] PROCEDURE <procedure name> [ ( <parameter list> ) ]
      { IS | AS } 
      <item declaration>  
      BEGIN
      <pl statement list> 
      END [ <procedure name> ]
      ;
 
<parameter list> ::= 
      <parameter name> [ <parameter mode> ] <datatype> [ <parameter default> ] [ , ... ] 

<parameter mode> ::= 
      IN 
    | OUT 
    | IN OUT 
 
<parameter default> ::= 
      { := | DEFAULT } <value expression> 

<procedure characteristics> ::= 
      AUTHID CURRENT_USER 
    | AUTHID DEFINER

사용 범위 및 접근 권한

<create procedure statement> 구문을 수행하려면 사용자가 다음 조건들을 만족해야 한다.

구문 규칙 및 파라미터

OR REPLACE

이미 procedure가 존재할 경우, 기존의 procedure를 새로운 procedure로 대체한다.

procedure name

생성할 procedure의 이름으로써 스키마 내에서 고유한 이름이어야 한다.
schema_name.procedure_name과 같이 procedure가 속할 스키마를 정의할 수 있다.
schema_name을 생략할 경우, 구문을 수행하는 사용자의 기본 스키마 이름이 사용된다.
procedure 이름의 길이는 128 바이트보다 작아야 한다.

parameter name

Procedure의 parameter 이름을 정의한다.
각 parameter 이름은 procedure 내에서 고유해야 한다.
즉, procedure의 parameter와 PL item은 동일한 이름을 가질 수 없다.
parameter 이름의 길이는 128 바이트보다 작아야 한다.
하나의 procedure에서 사용할 수 있는 parameter의 최대 개수에는 제한이 없다.

parameter mode

각 parameter mode를 설정한다.
Parameter mode에는 IN, OUT, IN OUT이 있다.
Parameter mode를 명시하지 않을 경우, 기본 mode는 IN이다.

parameter default

Parameter의 기본값이다.
Parameter default가 명시된 parameter는 procedure 실행할 때 생략할 수 있다.
Parameter를 명시하지 않고 생략할 경우, parameter를 정의할 때 명시한 <value expression>을 기본값으로 가진다.
<value expression>의 datatype은 parameter의 datatype이어야 한다.
<parameter default>를 가진 parameter 이후에 정의되는 모든 parameter에는 <parameter default>가 있어야 한다.

procedure characteristics

Procedure 수행 옵션을 정의한다. 같은 항목에 대해서는 한 번만 기술해야 한다.

Item Declaration

Procedure 내부에서 사용될 로컬 변수 등의 item을 선언한다.
PL block에서 선언가능한 모든 item들을 선언할 수 있다.

PL Stmt List

Procedure의 body 부분으로써 수행할 PL statement들을 나열한다. 
Procedure의 내부에는 '?'나 ':V1'과 같은 bind parameter를 사용할 수 없다.

설명

Schema-level SQL procedure를 정의한다. 생성된 procedure는 CALL 구문, anonymous block, 또는 다른 procedure/ function에서 호출될 수 있다.
Procedure의 정의는 INFORMATION_SCHEMA의 ROUTINES 테이블에서 확인할 수 있다. Procedure의 parameter들에 대한 정의는 INFORMATION_SCHEMA의 PARAMETERS 테이블에서 확인할 수 있다.
관련 객체들이 존재하지 않아 procedure가 일시적으로 불완전해졌을 경우, ALTER PROCEDURE 구문으로 plan 생성을 다시 시도해볼 수 있다.
생성된 procedure는 DROP PROCEDURE 구문을 사용하여 제거할 수 있다.
Procedure의 최대 생성 개수에는 제한이 없으므로 저장 공간에 문제가 없는 한 계속 생성할 수 있다.

사용 예

gSQL> CREATE OR REPLACE PROCEDURE PROC1( A1 INTEGER, A2 INTEGER )

  IS
    V1 INTEGER;
  BEGIN

    SELECT COUNT(*)
      INTO V1
      FROM T1
      WHERE T1.I1 >= A1 AND T1.I1 <= A2;

    DBMS_OUTPUT.PUT_LINE( 'V1 = ' || V1 );
  END;
  /

Procedure created.

호환성

SQL 표준에서는 다음과 같은 절을 정의하지 않고 있다.

SQL 표준 호환성

Feature ID

설명

지원여부

T471

Result sets return value

X

T341

Overloading of SQL-invoked functions and SQL-invoked procedures

X

S023

Basic structured types

X

S241

Transform functions

X

S024

Enhanced structured types

X

T571

Array-returning external SQL-invoked functions

X

T572

Multiset-returning external SQL-invoked functions

X

S201

SQL routines on arrays

X

S202

SQL-invoked routines on multisets

X

T323

Explicit security for external routines

X

S231

Structured type locators

X

S232

Array locators

X

S233

Multiset locators

X

T041

Basic LOB data type support

X

S027

Create method by specific method name

X

T041

Basic LOB data type support

X

T324

Explicit security for SQL routines

O

T326

Table functions

O

T651

SQL-schema statements in SQL routines

X

T652

SQL-dynamic statements in SQL routines

O

T653

SQL-schema statements in external routines

X

T654

SQL-dynamic statements in external routines

X

T655

Cyclically dependent routines

X

T272

Enhanced savepoint management

X

T522

Default values for IN parameters of SQL-invoked procedures

O

B121

Routine language Ada

X

B122

Routine language C

X

B123

Routine language COBOL

X

B124

Routine language Fortran

X

B125

Routine language MUMPS

X

B126

Routine language Pascal

X

B127

Routine language PL/I

X

B128

Routine language SQL

O

B129

Routine language Ada: VARCHAR and NUMERIC support

X

참조

자세한 내용은 다음을 참조한다.

DROP FUNCTION

기능

Function을 제거한다.

구문

<drop function statement> ::=
    DROP FUNCTION [ IF EXISTS ] func_name
    ;

사용 범위 및 접근 권한

<drop function statement> 구문을 수행하려면 사용자에게 다음 권한 중 하나가 있어야 한다.

구문 규칙 및 파라미터

IF EXISTS

Function이 존재하지 않더라도 에러가 발생하지 않는다.

FUNC NAME

제거할 function의 이름이다. 
schema_name.func_name과 같이 function이 속한 스키마를 정의할 수 있다. schema_name을 생략할 경우, 구문을 수행하는 사용자의 기본 스키마 이름이 사용된다.

설명

지정된 schema-level function을 제거한다.

사용 예

gSQL> CREATE OR REPLACE FUNCTION FUNC1
RETURN INTEGER
 IS
    V1 INTEGER;
  BEGIN
    V1 := 10;
    RETURN V1;
  END;
  /

Function created.


COMMIT;

Commit complete.
gSQL> DROP FUNCTION FUNC1;

Function dropped.

호환성

SQL 표준은 다음과 같은 절을 정의하지 않고 있다.

SQL 표준 호환성

Feature ID

설명

지원 여부

F032

CASCADE drop behavior

X

S024

Enhanced structured types

X

참조

자세한 내용은 다음을 참조한다.

DROP PACKAGE

기능

Package (body만 또는 spec/ body 모두)를 제거한다.

구문

<drop package statement> ::=
    DROP PACKAGE [BODY] [ IF EXISTS ] package_name
    ;

사용 범위 및 접근 권한

<drop package statement> 구문을 수행하려면 사용자에게 다음 권한 중 하나가 있어야 한다.

구문 규칙 및 파라미터

BODY

주어진 이름을 가진 package의 body 객체만 제거한다. BODY 라는 키워드를 명시하지 않은 경우 package specification과 body를 모두 삭제한다.

IF EXISTS

Package가 존재하지 않더라도 에러가 발생하지 않는다.

PACKAGE NAME

제거할 package의 이름이다. 
schema_name.package_name 과 같이 package가 소속한 스키마를 정의할 수 있다.
schema_name을 생략할 경우, 구문을 수행하는 사용자의 기본 스키마 이름이 사용된다.

설명

지정된 package object를 제거한다.

사용 예

CREATE PACKAGE PKG1
  IS
    V1 INTEGER;
    FUNCTION FUNC1 (A1 INTEGER) RETURN INTEGER;
  END;
  /

Package created.

DROP PACKAGE IF EXISTS PKG1;

Package dropped.

호환성

SQL 표준에서는 DRO MODULE 구문이다.

참조

자세한 내용은 다음을 참조한다.

DROP PROCEDURE

기능

Procedure를 제거한다.

구문

<drop procedure statement> ::=
    DROP PROCEDURE [ IF EXISTS ] proc_name
    ;

사용 범위 및 접근 권한

<drop procedure statement> 구문을 수행하려면 사용자에게 다음 권한 중 하나가 있어야 한다.

구문 규칙 및 파라미터

IF EXISTS

Procedure가 존재하지 않더라도 에러가 발생하지 않는다.

PROC NAME

제거할 procedure의 이름이다. 
schema_name.proc_name과 같이 procedure가 속한 스키마를 정의할 수 있다. schema_name을 생략할 경우, 구문을 수행하는 사용자의 기본 스키마 이름이 사용된다.

설명

지정된 schema-level procedure를 제거한다.

사용 예

gSQL> CREATE OR REPLACE PROCEDURE PROC1( A1 INTEGER, A2 INTEGER )
  IS
    V1 INTEGER;
  BEGIN

    SELECT COUNT(*)
      INTO V1
      FROM T1
      WHERE T1.I1 >= A1 AND T1.I1 <= A2;

    DBMS_OUTPUT.PUT_LINE( 'V1 = ' || V1 );
  END;
  /

Procedure created.


COMMIT;

Commit complete.


gSQL> DROP PROCEDURE PROC1;

Procedure dropped.

호환성

SQL 표준은 다음과 같은 절을 정의하지 않고 있다.

SQL 표준 호환성

Feature ID

설명

지원 여부

F032

CASCADE drop behavior

X

S024

Enhanced structured types

X

참조

자세한 내용은 다음을 참조한다.