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スクリプトからコマンドを実行した後、出力が表示されます。)