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パッケージでは、TimesTen用の設定を示す表10-1の定数が使用されます。
表10-1 UTL_IDENTの定数
| 定数 | 型 | 値 | 説明 |
|---|---|---|---|
|
|
|
|
Oracle Databaseかどうかを指定します。 |
|
|
|
|
Oracleクライアントかどうかを指定します。 |
|
|
|
|
Oracle Formsかどうかを指定します。 |
|
|
|
|
TimesTenかどうかを指定します。 |
この例では、UTL_IDENTおよびTT_DB_VERSIONパッケージを使用して、使用中のデータベースの情報を示します。現在のリリースの場合、「Oracle Database 11.2」または「TimesTen 11.2.1」が表示されます。条件付きコンパイル・トリガー文字$は、アプリケーションがコンパイルされる前に処理されるコードを識別します。
Command> run what_db.sql
create or replace function what_db
return varchar2
as
dbname varchar2(100);
version varchar2(100);
begin
$if utl_ident.is_timesten
$then
dbname := 'TimesTen';
version := substr(tt_db_version.version, 1, 2) ||
'.' ||
substr(tt_db_version.version, 3, 1) ||
'.' ||
substr(tt_db_version.version, 4, 1);
$elsif utl_ident.is_oracle_server
$then
dbname := 'Oracle Database';
version := dbms_db_version.version || '.' || dbms_db_version.release;
$else
dbname := 'Non-database environment';
version := '';
$end
return dbname || ' ' || version;
end;
/
Function created.
set serveroutput on;
begin
dbms_output.put_line(what_db());
end;
/
TimesTen 11.2.1
PL/SQL procedure successfully completed.