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 procedure statement> ::=
    CREATE [ OR REPLACE ]  
        FUNCTION func_name [ ( { param_name [IN|OUT|INOUT] datatype [ { := | DEFAULT } init_expr ] } [, ...] ) ]
        RETURN datatype
        [ <func_characteristics> ]
        { IS | AS } <item_declaration> BEGIN <pl_stmt_list> END
    ;

<func_characteristics> ::=
    DETERMINISTIC | AUTHID CURRENT_USER | AUTHID DEFINER

사용 범위 및 접근 권한

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

구문 규칙 및 파라미터

OR REPLACE

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

FUNCTION NAME

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

PARAM NAME

Function이 사용할 인자의 이름을 정의한다.
각 인자의 이름은 function 내에서 고유한 이름이어야 한다.
각 인자 이름의 길이는 128 바이트보다 작아야 한다.
하나의 function에 사용할 수 있는 인자의 최대 개수에는 제한이 없다.

Bind Type

각 인자의 bind type을 설정한다. 
표기하지 않을 경우 기본 타입은 IN 이다.

Func_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

X

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 proc_name [ ( { param_name [IN|OUT|INOUT] datatype [ { := | DEFAULT } init_expr ] } [, ...] ) ]
        [ <proc_characteristics> ]
        { IS | AS } <item_declaration> BEGIN <pl_stmt_list> END
    ;

<proc_characteristics> ::=
    AUTHID CURRENT_USER | AUTHID DEFINER

사용 범위 및 접근 권한

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

구문 규칙 및 파라미터

[ OR REPLACE ]

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

PROC NAME

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

PARAM NAME

Procedure가 사용할 인자의 이름을 정의한다. 
각 인자의 이름은 procedure 내에서 고유한 이름이어야 한다. 
각 인자 이름의 길이는 128 바이트보다 작아야 한다. 
하나의 procedure에 사용할 수 있는 인자의 최대 개수에는 제한이 없다.

Bind Type

각 인자의 bind type을 설정한다. 
표기하지 않을 경우 기본 타입은 IN이다.

proc_characteristics

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

item declaration

프로시져 내부에서 사용될 로컬 변수등의 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

X

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

참조

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