CREATE TYPE (ネスト表) ステートメント (PL/SQL)

CREATE TYPE (ネスト表) ステートメントは、INTEGER データ・タイプを添字とする連想配列を定義します。

呼び出し方法

このステートメントは、 コマンド行プロセッサー (CLP)、サポートされる対話式 SQL インターフェース、アプリケーション、またはルーチンから実行できます。

許可

ステートメントの許可 ID によって保持される特権には、少なくとも以下のいずれか 1 つが含まれていなければなりません。
  • ネスト表タイプのスキーマ名が存在しない場合、データベースに対する IMPLICIT_SCHEMA 権限
  • ネスト表タイプのスキーマ名が既存のスキーマを参照している場合、そのスキーマに対する CREATEIN 特権
  • DBADM 権限

構文

構文図を読む構文図をスキップするCREATEOR REPLACE TYPEassocarrayISASTABLE OFdatatype

説明

OR REPLACE
スキーマ内に同じ名前のユーザー定義のデータ・タイプが既に存在していた場合、新しいデータ・タイプが既存のデータ・タイプと置き換わることを示します。 このオプションを指定しない場合、新しいデータ・タイプによって、同じスキーマ内の同名の既存のデータ・タイプを置き換えることはできません。
assocarray
連想配列タイプの ID を指定します。
datatype
サポートされるデータ・タイプ (NUMBER、VARCHAR2、RECORD、 VARRAY、または連想配列タイプなど) を指定します。

以下の例は、EMP 表から最初の 10 人の従業員名を読み、それらをネスト表に格納した後、その内容を表示します。
SET SERVEROUTPUT ON
/

CREATE OR REPLACE TYPE emp_arr_typ IS TABLE OF VARCHAR2(10)
/

DECLARE
   emp_arr         emp_arr_typ;
   CURSOR emp_cur IS SELECT ename FROM emp WHERE ROWNUM <= 10;     
   i               INTEGER := 0; 
BEGIN     
   FOR r_emp IN emp_cur LOOP         
      i := i + 1;         
      emp_arr(i) := r_emp.ename;     
   END LOOP;     
   FOR j IN 1..10 LOOP         
      DBMS_OUTPUT.PUT_LINE(emp_arr(j));     
   END LOOP; 
END 
/