Oracle® TimesTen In-Memory Database PL/SQL Packages Reference 11g Release 2 (11.2.2) Part Number E21645-01 |
|
|
PDF · Mobi · ePub |
The UTL_IDENT
package indicates which database or client PL/SQL is running in, such as TimesTen versus Oracle Database, and server versus client. Each database or client running PL/SQL has its own copy of this package.
This chapter contains the following topics:
Overview
Security model
Constants
Examples
This section contains topics that relate to using the UTL_IDENT
package.
The UTL_IDENT
package indicates whether PL/SQL is running on TimesTen, an Oracle Database client, an Oracle Database server, or Oracle Forms. Each of these has its own version of UTL_IDENT
with appropriate settings for the constants.
The primary use case for the UTL_IDENT
package is for conditional compilation, resembling the following, of PL/SQL packages that are supported by Oracle Database, TimesTen, or clients such as Oracle Forms.
$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
Also see "Examples".
The UTL_IDENT
package runs as the package owner SYS
. The public synonym UTL_IDENT
and EXECUTE
permission on this package are granted to PUBLIC
.
The UTL_IDENT
package uses the constants in Table 11-1, shown here with the settings in a TimesTen installation.
Table 11-1 UTL_IDENT constants
Constant | Type | Value | Description |
---|---|---|---|
|
|
|
PL/SQL is running in Oracle Database. |
|
|
|
PL/SQL is running in Oracle Client. |
|
|
|
PL/SQL is running in Oracle Forms. |
|
|
|
PL/SQL is running in TimesTen. |
This example shows output from a script that creates and executes a function IS_CLOB_SUPPORTED
that uses the UTL_IDENT
and TT_DB_VERSION
packages to provide information about the database being used. The function uses UTL_IDENT
to determine whether the database is TimesTen, then uses TT_DB_VERSION
to determine the TimesTen version. VER_LE_1121
is TRUE
for TimesTen 11.2.1 releases and FALSE
for TimesTen 11g Release 2 (11.2.2) releases. In the example, because VER_LE_1121
is determined to be FALSE
, then it can be assumed that this is a TimesTen 11g Release 2 (11.2.2) release and therefore LOBs are supported. The example then creates a table with a CLOB
column and shows DESCRIBE
output of the table.
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 TimesTen 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 *)
(Output is shown after running the commands from a SQL script.)