CREATE TYPE (配列)
CREATE TYPE (配列) ステートメントは、現行サーバーで配列タイプを定義します。
呼び出し
このステートメントは、アプリケーション・プログラムに組み込むことも、 あるいは対話式に実行することもできます。 これは、動的に準備できる実行可能ステートメントです。
権限
このステートメントの権限 ID が保持する特権には、少なくとも以下の 1 つ が含まれていなければなりません。
- スキーマ内に作成する特権。詳しくは、スキーマ内で作成する必要のある権限を参照してください。
- データベース管理者権限
このステートメントの権限 ID が保持する特権には、少なくとも以下の 1 つ が含まれていなければなりません。
- SYSTYPES カタログ表の場合
- 該当の表に対する INSERT 特権、および
- QSYS2 ライブラリーに対する *EXECUTE システム権限
- データベース管理者権限
SQL 名が指定され、特殊タイプが作成されるライブラリーと同じ名前のユーザー・プロファイルが存在し、しかも、その名前がステートメントの権限 ID と異なっている場合、ステートメントの権限 ID が保持している特権には、少なくとも次のいずれか 1 つを含める必要があります。
- その名前を持つユーザー・プロファイルに対する *ADD システム権限
- データベース管理者権限
SQL 特権に対応するシステム権限については、『表またはビューへの権限を検査する際の対応するシステム権限』を参照してください。
構文
>>-CREATE--TYPE--array-type-name--------------------------------> .-2147483647-------. >--AS--built-in-type--ARRAY--[--+------------------+--]-------->< '-integer-constant-'
built-in-type |--+-+---SMALLINT---+-------------------------------------------------------------------------------------+--| | +-+-INTEGER-+--+ | | | '-INT-----' | | | '---BIGINT-----' | | .-(5,0)------------------------. | +-+-+-DECIMAL-+-+--+------------------------------+----------------------------------------------------+ | | '-DEC-----' | | .-,0--------. | | | '-+-NUMERIC-+-' '-(--integer--+-----------+--)-' | | '-NUM-----' '-, integer-' | | .-(--53--)------. | +-+-FLOAT--+---------------+-+-------------------------------------------------------------------------+ | | '-(--integer--)-' | | | +-REAL---------------------+ | | | .-PRECISION-. | | | '-DOUBLE--+-----------+----' | | .-(--34--)-. | +---DECFLOAT--+----------+-----------------------------------------------------------------------------+ | '-(--16--)-' | | .-(--1--)-------. | +-+-+-+-CHARACTER-+--+---------------+----------+--+----------------+---------------------+------------+ | | | '-CHAR------' '-(--integer--)-' | +-FOR BIT DATA---+ | | | | '-+-+-CHARACTER-+--VARYING-+--(--integer--)-' +-FOR SBCS DATA--+ | | | | | '-CHAR------' | +-FOR MIXED DATA-+ | | | | '-VARCHAR----------------' '-ccsid-clause---' | | | | .-(--1M--)-------------. | | | '-----+-+-CHARACTER-+--LARGE OBJECT-+------+----------------------+--+----------------+-' | | | '-CHAR------' | '-(--integer--+---+--)-' +-FOR SBCS DATA--+ | | '-CLOB------------------------' +-K-+ +-FOR MIXED DATA-+ | | '-M-' '-ccsid-clause---' | | .-(--1--)-------. | +-+---GRAPHIC----+---------------+-------+--+--------------+-------------------------------------------+ | | '-(--integer--)-' | '-ccsid-clause-' | | +-+-GRAPHIC VARYING-+--(--integer--)---+ | | | '-VARGRAPHIC------' | | | | .-(--512K--)-----------. | | | '---DBCLOB----+----------------------+-' | | '-(--integer--+---+--)-' | | '-K-' | | .-(--1--)-------. | +-+-+-+-NATIONAL CHARACTER-+--+---------------+----------+---------------------+--+------------------+-+ | | | +-NATIONAL CHAR------+ '-(--integer--)-' | | '-normalize-clause-' | | | | '-NCHAR--------------' | | | | | '-+-+-NATIONAL CHARACTER-+--VARYING-+--(--integer--)-' | | | | | +-NATIONAL CHAR------+ | | | | | | '-NCHAR--------------' | | | | | '-NVARCHAR------------------------' | | | | .-(--512K--)-----------. | | | '-----+-+-NATIONAL CHARACTER-+--LARGE OBJECT-+------+----------------------+-' | | | '-NCHAR--------------' | '-(--integer--+---+--)-' | | '-NCLOB--------------------------------' '-K-' | | .-(--1--)-------. | +-+-+-BINARY--+---------------+---------+-----------------+--------------------------------------------+ | | | '-(--integer--)-' | | | | | '-+-BINARY VARYING-+--(--integer--)-' | | | | '-VARBINARY------' | | | | .-(--1M--)-------------. | | | '---+-BLOB----------------+----+----------------------+-' | | '-BINARY LARGE OBJECT-' '-(--integer--+---+--)-' | | +-K-+ | | '-M-' | +-+-DATE-------------------------+---------------------------------------------------------------------+ | | .-(--0--)-. | | | +-TIME--+---------+------------+ | | | .-(--6--)-------. | | | '-TIMESTAMP--+---------------+-' | | '-(--integer--)-' | '---XML--+--------------+------------------------------------------------------------------------------' '-ccsid-clause-' ccsid-clause |--CCSID--integer--+------------------+-------------------------| '-normalize-clause-' normalize-clause .-NOT NORMALIZED-. |--+-NORMALIZED-----+-------------------------------------------|
説明
- array-type-name
- 配列の名前を指定します。暗黙的または明示的修飾子も含め、この名前は、現行サーバーに既に存在している特殊タイプまたは配列タイプと同じ名前にすることはできません。
SQL 名が指定されている場合、配列タイプは、暗黙的または明示的修飾子で指定しているスキーマ内に作成されます。
システム名が指定されている場合、配列タイプは、修飾子で指定しているスキーマ内に作成されます。修飾されない場合:
- CURRENT SCHEMA 特殊レジスターの値が *LIBL である場合、配列タイプは、現行ライブラリー (*CURLIB) 内に作成されます。
- そうでない場合、配列タイプは現行スキーマ内に作成されます。
配列タイプが有効なシステム名でない場合、DB2® for i は、システム名を生成します。名前の生成に関する規則については、表名の生成の規則を参照してください。
配列タイプ名 は、組み込みデータ・タイプの名前にすることはできません。また、下記のシステム予約のどのキーワードにすることもできません。これは、それらのキーワードを区切り文字付き ID として指定している場合にも該当します。= < > >= <= <> ¬= ¬< ¬< != !< !> ALL FALSE POSITION XMLAGG AND FOR RID XMLATTRIBUTES ANY FROM RRN XMLCOMMENT ARRAY_AGG HASHED_VALUE SELECT XMLCONCAT BETWEEN IN SIMILAR XMLDOCUMENT BOOLEAN INTERVAL SOME XMLELEMENT CASE IS STRIP XMLFOREST CAST LIKE SUBSTRING XMLGROUP CHECK MATCH TABLE XMLNAMESPACES DATAPARTITIONNAME NODENAME THEN XMLPARSE DATAPARTITIONNUM NODENUMBER TRIM XMLPI DBPARTITIONNAME NOT TRUE XMLROW DBPARTITIONNUM NULL TYPE XMLSERIALIZE DISTINCT ONLY UNIQUE XMLTEXT EXCEPT OR UNKNOWN XMLVALIDATE EXISTS OVERLAPS WHEN XSLTRANSFORM EXTRACT PARTITION 修飾付きの配列タイプ名 を指定した場合は、スキーマ名は QSYS、QSYS2、QTEMP、または SYSIBM であってはなりません。
- built-in-type
- 配列のすべてのエレメントのデータ・タイプとして使用する組み込みデータ・タイプを指定します。それぞれの組み込みデータの詳細については、CREATE TABLEを参照してください。
長さ、精度、位取りの属性があるデータ・タイプで特定の値が指定されていない場合は、構文図で示されているデフォルト属性がそのデータ・タイプで暗黙指定されます。
配列タイプがストリング・データ・タイプに対応している場合は、配列タイプの作成時に、CCSID がその配列タイプに関連付けられます。データ・タイプの詳細については、CREATE TABLE を参照してくだ さい。
- ARRAY [integer-constant]
- 配列の最大カーディナリティーとして integer-constant を指定します。 その値は、0 より大きい正数でなければなりません。値を指定しない場合は、最大整数値 2147483647 が使用されます。配列内に割り当てることのできる配列エレメント の最大数は、4 ギガバイトに収まるエレメント数です。可変長、LOB、および XML の配列エレメント は、それぞれの最大長で割り振られます。
注
追加の生成関数: 配列タイプの変換のための関数は作成されますが、サービス・プログラムは作成されません。したがって、それらの関数に関する特権を付与したり取り消したりすることはできません。
生成されるキャスト関数の名前:キャスト関数のうちの 1 つの非修飾名 は ARRAY です。配列タイプに変換するキャスト関数の名前は、その配列タイプの名前です。そのキャスト関数の入力パラメーターのデータ・タイプは、ARRAY のデータ・タイプと同じです。
例えば、T_SHOESIZES という名前の配列タイプが、次のステートメントを使用して作成されると仮定します。
CREATE TYPE CLAIRE.T_SHOESIZES AS INT ARRAY[]
このステートメントが実行されると、データベース・マネージャーは、次のキャスト関数も生成 します。 つまり、配列タイプから配列に変換する ARRAY と、配列から配列タイプに変換する T_SHOESIZES です。
生成されたキャスト関数を明示的に除去することはできません。配列タイプ用に生成される cast 関数は、 配列タイプが DROP ステートメントでドロップされると、暗黙的にドロップされます。
配列タイプの属性 : 配列タイプは *SQLUDT オブジェクトとして作成されます。
配列タイプの所有権: SQL 名が指定されている場合、
- 作成した配列タイプが入れられるスキーマと同じ名前のユーザー・プロファイルが存在する場合、配列タイプの所有者 はそのユーザー・プロファイルです。
- その他の場合は、配列タイプの所有者 は、この ステートメントを実行しているスレッドのユーザー・プロファイルまたは グループ・ユーザー・プロファイルです。
システム名を指定した場合は、配列タイプの所有者 は、この ステートメントを実行しているスレッドのユーザー・プロファイルまたはグループ・ユーザー・プロファイルです。
配列タイプの権限 : SQL 名を使用する場合は、配列タイプは、*PUBLIC に対するシステム権限 *EXCLUDE を使用して作成されます。システム名を使用する場合、配列タイプは、スキーマの作成権限 (CRTAUT) パラメーターによって決められる *PUBLIC に対する権限を使用して作成されます。
配列タイプの所有者がグループ・プロファイルのメンバー (GRPPRF キーワード) であり、グループ権限が指定されている (GRPAUT キーワード) 場合は、そのグループ・プロファイルにも、その配列タイプに対する権限が与えられます。
例
例 1: PHONENUMBERS という名前の配列タイプを作成します。そのエレメントのデータ・タイプは DECIMAL(10,0)、エレメントの最大数は 5 個です。
CREATE TYPE PHONENUMBERS AS DECIMAL(10,0) ARRAY[5]
例 2: スキーマ GENERIC で NUMBERS という名前の配列タイプを作成します。エレメントの最大数は不明です。
CREATE TYPE GENERIC.NUMBERS
AS BIGINT ARRAY[]