UTL_IDENTパッケージは、PL/SQLを実行しているデータベースまたはクライアント(TimesTenとOracle Database、サーバーとクライアントなど)を示します。PL/SQLを実行する各データベースまたはクライアントには、このパッケージのコピーがあります。
この章の内容は次のとおりです。
概要
セキュリティ・モデル
定数
例
この項では、UTL_IDENTパッケージの使用に関連するトピックについて説明します。
UTL_IDENTパッケージは、PL/SQLを実行しているのがTimesTen、Oracle Databaseクライアント、Oracle DatabaseサーバーまたはOracle Formsであるかを示します。これらにはそれぞれ、定数に適切な設定を持つUTL_IDENTのバージョンがあります。
UTL_IDENTパッケージの主な使用例は、次に示すように、Oracle Database、TimesTen、またはOracle FormsなどのクライアントでサポートされているPL/SQLパッケージの条件付きコンパイルを対象にしています。
$if utl_ident.is_oracle_server $then
[...Run code supported for Oracle Database...]
$elsif utl_ident.is_timesten $then
[...code supported for TimesTen Database...]
$end
「例」も参照してください。
UTL_IDENTパッケージは、パッケージ所有者SYSとして実行されます。パブリック・シノニムUTL_IDENTおよびこのパッケージに対するEXECUTE権限がPUBLICに付与されます。
UTL_IDENTパッケージでは、表12-1に示す定数が使用されます(ここではTimesTenインストールでの設定も示します)。
表12-1 UTL_IDENTの定数
| 定数 | タイプ | 値 | 説明 |
|---|---|---|---|
|
|
|
|
Oracle Databaseで実行されるPL/SQLです。 |
|
|
|
|
Oracle Clientで実行されるPL/SQLです。 |
|
|
|
|
Oracle Formsで実行されるPL/SQLです。 |
|
|
|
|
TimesTenで実行されるPL/SQLです。 |
この例は、使用されるデータベースの情報を提供するUTL_IDENTとTT_DB_VERSIONパッケージを使用するIS_CLOB_SUPPORTEDファンクションを作成および実行するスクリプトの出力を示します。このファンクションでは、データベースがTimesTenであるかの判断にUTL_IDENTを使用し、TimesTenのバージョンの判断にTT_DB_VERSIONを使用します。VER_LE_1121は、TimesTen 11.2.1リリースではTRUEであり、TimesTen 11gリリース2(11.2.2)のリリースではFALSEです。この例では、VER_LE_1121がFALSEと判断されたので、これはTimesTen 11gリリース2(11.2.2)リリースであり、LOBはサポートされるとみなすことができます。次に例では、CLOB列を含む表を作成し、表のDESCRIBE出力を示します。
create or replace function is_clob_supported return boolean
as
begin
$if utl_ident.is_oracle_server
$then
return true;
$elsif utl_ident.is_timesten
$then
$if tt_db_version.ver_le_1121
$then
return false; -- CLOB datatype was introduced in 11g Release 2 (11.2.2)
$else
return true;
$end
$end
end;
Function created.
show errors;
No errors.
begin
if is_clob_supported
then
execute immediate 'create table mytab (mydata clob)';
else
execute immediate 'create table mytab (mydata varchar2(4000000))';
end if;
end;
PL/SQL procedure successfully completed.
describe mytab;
Table MYSCHEMA.MYTAB:
Columns:
MYDATA CLOB
1 table found.
(primary key columns are indicated with *)
(SQLスクリプトからコマンドを実行した後、出力が表示されます。)