SQL> @$ORACLE_HOME/rdbms/admin/noncdb_to_pdb.sql; SQL> SET SERVEROUTPUT ON SQL> SET FEEDBACK 1 SQL> SET NUMWIDTH 10 SQL> SET LINESIZE 80 SQL> SET TRIMSPOOL ON SQL> SET TAB OFF SQL> SET PAGESIZE 100 SQL> SET VERIFY OFF SQL> SQL> -- save settings SQL> STORE SET ncdb2pdb.settings.sql REPLACE Wrote file ncdb2pdb.settings.sql SQL> SQL> SET TIME ON 21:58:13 SQL> SET TIMING ON 21:58:13 SQL> 21:58:13 SQL> WHENEVER SQLERROR EXIT; 21:58:13 SQL> 21:58:13 SQL> DOC 21:58:13 DOC>####################################################################### 21:58:13 DOC>####################################################################### 21:58:13 DOC> The following statement will cause an "ORA-01403: no data found" 21:58:13 DOC> error if we're not in a PDB. 21:58:13 DOC> This script is intended to be run right after plugin of a PDB, 21:58:13 DOC> while inside the PDB. 21:58:13 DOC>####################################################################### 21:58:13 DOC>####################################################################### 21:58:13 DOC># 21:58:13 SQL> 21:58:13 SQL> VARIABLE cdbname VARCHAR2(128) 21:58:13 SQL> VARIABLE pdbname VARCHAR2(128) 21:58:13 SQL> BEGIN 21:58:13 2 SELECT sys_context('USERENV', 'CDB_NAME') 21:58:13 3 INTO :cdbname 21:58:13 4 FROM dual 21:58:13 5 WHERE sys_context('USERENV', 'CDB_NAME') is not null; 21:58:13 6 SELECT sys_context('USERENV', 'CON_NAME') 21:58:13 7 INTO :pdbname 21:58:13 8 FROM dual 21:58:13 9 WHERE sys_context('USERENV', 'CON_NAME') <> 'CDB$ROOT'; 21:58:13 10 END; 21:58:13 11 / PL/SQL procedure successfully completed. Elapsed: 00:00:00.01 21:58:13 SQL> 21:58:13 SQL> @@?/rdbms/admin/loc_to_common0.sql 21:58:13 SQL> Rem 21:58:13 SQL> Rem $Header: rdbms/admin/loc_to_common0.sql /main/4 2016/02/03 15:44:10 sankejai Exp $ 21:58:13 SQL> Rem 21:58:13 SQL> Rem loc_to_common0.sql 21:58:13 SQL> Rem 21:58:13 SQL> Rem Copyright (c) 2015, 2016, Oracle and/or its affiliates. 21:58:13 SQL> Rem All rights reserved. 21:58:13 SQL> Rem 21:58:13 SQL> Rem NAME 21:58:13 SQL> Rem loc_to_common0.sql - 21:58:13 SQL> Rem 21:58:13 SQL> Rem DESCRIPTION 21:58:13 SQL> Rem 21:58:13 SQL> Rem 21:58:13 SQL> Rem NOTES 21:58:13 SQL> Rem 21:58:13 SQL> Rem 21:58:13 SQL> Rem BEGIN SQL_FILE_METADATA 21:58:13 SQL> Rem SQL_SOURCE_FILE: rdbms/admin/loc_to_common0.sql 21:58:13 SQL> Rem SQL_SHIPPED_FILE: rdbms/admin/loc_to_common0.sql 21:58:13 SQL> Rem SQL_PHASE: LOC_TO_COMMON0 21:58:13 SQL> Rem SQL_STARTUP_MODE: NORMAL 21:58:13 SQL> Rem SQL_IGNORABLE_ERRORS: NONE 21:58:13 SQL> Rem SQL_CALLING_FILE: 21:58:13 SQL> Rem END SQL_FILE_METADATA 21:58:13 SQL> Rem 21:58:13 SQL> Rem MODIFIED (MM/DD/YY) 21:58:13 SQL> Rem sankejai 01/22/16 - 16076261: session parameters scoped to container 21:58:13 SQL> Rem pyam 12/22/15 - 21927236: rename pdb_to_fedpdb to pdb_to_apppdb 21:58:13 SQL> Rem pyam 09/22/15 - 20959267: check for version mismatch 21:58:13 SQL> Rem pyam 07/15/15 - Created 21:58:13 SQL> Rem 21:58:13 SQL> 21:58:13 SQL> SET ECHO ON 21:58:13 SQL> SET FEEDBACK 1 21:58:13 SQL> SET NUMWIDTH 10 21:58:13 SQL> SET LINESIZE 80 21:58:13 SQL> SET TRIMSPOOL ON 21:58:13 SQL> SET TAB OFF 21:58:13 SQL> SET PAGESIZE 100 21:58:13 SQL> 21:58:13 SQL> COLUMN pdbname NEW_VALUE pdbname 21:58:13 SQL> COLUMN pdbid NEW_VALUE pdbid 21:58:13 SQL> 21:58:13 SQL> 21:58:13 SQL> select :pdbname pdbname from dual; PDBNAME -------------------------------------------------------------------------------- NONCDB12C 1 row selected. Elapsed: 00:00:00.01 21:58:13 SQL> 21:58:13 SQL> select TO_CHAR(con_id) pdbid from v$pdbs where name='&pdbname'; PDBID ---------------------------------------- 4 1 row selected. Elapsed: 00:00:00.00 21:58:13 SQL> 21:58:13 SQL> -- save pluggable database open mode 21:58:13 SQL> COLUMN open_state_col NEW_VALUE open_sql; 21:58:13 SQL> COLUMN restricted_col NEW_VALUE restricted_state; 21:58:13 SQL> SELECT decode(open_mode, 21:58:13 2 'READ ONLY', 'ALTER PLUGGABLE DATABASE &pdbname OPEN READ ONLY', 21:58:13 3 'READ WRITE', 'ALTER PLUGGABLE DATABASE &pdbname OPEN', 21:58:13 4 'MIGRATE', 'ALTER PLUGGABLE DATABASE &pdbname OPEN UPGRADE', '') 21:58:13 5 open_state_col, 21:58:13 6 decode(restricted, 'YES', 'RESTRICTED', '') 21:58:13 7 restricted_col 21:58:13 8 from v$pdbs where name='&pdbname'; OPEN_STATE_COL RESTRICTED ------------------------------------------------- ---------- 1 row selected. Elapsed: 00:00:00.00 21:58:13 SQL> 21:58:13 SQL> alter session set container=CDB$ROOT; Session altered. Elapsed: 00:00:00.01 21:58:13 SQL> 21:58:13 SQL> -- if pdb was already closed, don't exit on error 21:58:13 SQL> WHENEVER SQLERROR CONTINUE; 21:58:13 SQL> alter pluggable database "&pdbname" close immediate instances=all; alter pluggable database "NONCDB12C" close immediate instances=all * ERROR at line 1: ORA-65020: pluggable database NONCDB12C already closed Elapsed: 00:00:00.09 21:58:13 SQL> WHENEVER SQLERROR EXIT; 21:58:13 SQL> 21:58:13 SQL> alter pluggable database "&pdbname" open upgrade; Pluggable database altered. Elapsed: 00:00:07.16 21:58:20 SQL> 21:58:20 SQL> -- check that PDB and CDB versions match 21:58:20 SQL> SELECT TO_NUMBER('VERSION MISMATCH') from sys.dual 21:58:20 2 WHERE (select count(*) from pdb_alert$ where name='&pdbname' and cause#=65 21:58:20 3 and status=1) > 0; no rows selected Elapsed: 00:00:00.00 21:58:20 SQL> 21:58:20 SQL> alter session set container = "&pdbname"; Session altered. Elapsed: 00:00:00.30 21:58:20 SQL> 21:58:20 SQL> -- initial setup before beginning the script 21:58:20 SQL> -- Bug 16076261: nls_length_semantics is not a parameter, so the value is not 21:58:20 SQL> -- lost after set container in further scripts. 21:58:20 SQL> alter session set NLS_LENGTH_SEMANTICS=BYTE; Session altered. Elapsed: 00:00:00.00 21:58:20 SQL> 21:58:20 SQL> 21:58:20 SQL> --------------------------------------------------------------------------- 21:58:20 SQL> -- PRE-SCRIPT CHECKS GO HERE: 21:58:20 SQL> 21:58:20 SQL> -- Check that we have no invalid (not upgraded) table data from 21:58:20 SQL> -- ALTERing Oracle-Maintained Types 21:58:20 SQL> DOC 21:58:20 DOC>####################################################################### 21:58:20 DOC>####################################################################### 21:58:20 DOC> 21:58:20 DOC> The following statement will cause an "ORA-01722: invalid number" 21:58:20 DOC> error, if the database contains invalid data as a result of type 21:58:20 DOC> evolution which was performed without the data being converted. 21:58:20 DOC> 21:58:20 DOC> To resolve this specific "ORA-01722: invalid number" error: 21:58:20 DOC> Perform the data conversion (details below) in the pluggable database. 21:58:20 DOC> 21:58:20 DOC> Please refer to Oracle Database Object-Relational Developer's Guide 21:58:20 DOC> for more information about type evolution. 21:58:20 DOC> 21:58:20 DOC> Data in columns of evolved Oracle-Maintained types must be converted 21:58:20 DOC> before the database can be converted. 21:58:20 DOC> 21:58:20 DOC> The following commands, run inside the PDB, will perform the data 21:58:20 DOC> conversion for Oracle supplied tables: 21:58:20 DOC> 21:58:20 DOC> @?/rdbms/admin/catuptabdata.sql 21:58:20 DOC> 21:58:20 DOC> You should then confirm that any non-Oracle supplied tables that 21:58:20 DOC> are dependent on Oracle-Maintained types are also converted. 21:58:20 DOC> You should review the data and determine if it needs 21:58:20 DOC> to be converted or removed. 21:58:20 DOC> 21:58:20 DOC> To view the columns affected by type evolution, execute the 21:58:20 DOC> following inside the PDB: 21:58:20 DOC> 21:58:20 DOC> SELECT rpad(u.name,128) TABLENAME, rpad(o.name,128) OWNER, 21:58:20 DOC> rpad(c.name,128) COLNAME 21:58:20 DOC> FROM SYS.OBJ$ o, SYS.COL$ c, SYS.COLTYPE$ t, SYS.USER$ u 21:58:20 DOC> WHERE BITAND(t.FLAGS, 256) = 256 -- UPGRADED = NO 21:58:20 DOC> AND o.OBJ# = t.OBJ# AND c.OBJ# = t.OBJ# AND c.COL# = t.COL# 21:58:20 DOC> AND t.INTCOL# = c.INTCOL# 21:58:20 DOC> AND o.owner# = u.user# 21:58:20 DOC> AND o.owner# NOT IN -- NOT a COMMON user 21:58:20 DOC> (SELECT user# FROM sys.user$ 21:58:20 DOC> WHERE type#=1 and bitand(spare1, 256)= 256) 21:58:20 DOC> AND t.OBJ# IN -- A dependent of an Oracle-Maintained type 21:58:20 DOC> (SELECT DISTINCT d_obj# 21:58:20 DOC> FROM sys.dependency$ 21:58:20 DOC> START WITH p_obj# IN -- Oracle-Maintained types 21:58:20 DOC> (SELECT obj# from sys.obj$ 21:58:20 DOC> WHERE type#=13 AND 21:58:20 DOC> bitand(flags, 4194304) = 4194304) 21:58:20 DOC> CONNECT BY PRIOR d_obj# = p_obj#); 21:58:20 DOC> 21:58:20 DOC> Once the data is confirmed, the following commands, run inside the PDB, 21:58:20 DOC> will convert the data returned by the above query. 21:58:20 DOC> 21:58:20 DOC> @?/rdbms/admin/utluptabdata.sql 21:58:20 DOC> 21:58:20 DOC> Depending on the amount of data involved, converting the evolved type 21:58:20 DOC> data can take a significant amount of time. 21:58:20 DOC> 21:58:20 DOC> After this is complete, please rerun noncdb_to_pdb.sql. 21:58:20 DOC> 21:58:20 DOC>####################################################################### 21:58:20 DOC>####################################################################### 21:58:20 DOC># 21:58:20 SQL> 21:58:20 SQL> DECLARE 21:58:20 2 do_abort boolean := false; 21:58:20 3 t_null varchar2(1); 21:58:20 4 BEGIN 21:58:20 5 21:58:20 6 -- check for Oracle-Maintained tables that are not UPGRADED 21:58:20 7 BEGIN 21:58:20 8 SELECT NULL INTO t_null 21:58:20 9 FROM sys.coltype$ t, sys.obj$ o 21:58:20 10 WHERE BITAND(t.flags, 256) = 256 -- UPGRADED = NO 21:58:20 11 AND t.obj# = o.obj# 21:58:20 12 AND o.owner# IN -- An Oracle-Supplied user 21:58:20 13 (SELECT user# FROM sys.user$ 21:58:20 14 WHERE type#=1 and bitand(spare1, 256)= 256) 21:58:20 15 AND rownum <=1; 21:58:20 16 do_abort := TRUE; 21:58:20 17 dbms_output.put_line('Oracle-Maintained tables need to be UPGRADED.'); 21:58:20 18 EXCEPTION 21:58:20 19 WHEN NO_DATA_FOUND THEN NULL; 21:58:20 20 END; 21:58:20 21 21:58:20 22 -- check for user tables dependent on Oracle-Maintained types 21:58:20 23 -- that are not upgraded 21:58:20 24 BEGIN 21:58:20 25 SELECT NULL INTO t_null 21:58:20 26 FROM sys.obj$ o, sys.coltype$ t 21:58:20 27 WHERE BITAND(t.FLAGS, 256) = 256 -- UPGRADED = NO 21:58:20 28 AND t.obj# = o.obj# 21:58:20 29 AND o.owner# NOT IN -- Not an Oracle-Supplied user 21:58:20 30 (SELECT user# FROM sys.user$ 21:58:20 31 WHERE type#=1 and bitand(spare1, 256)= 256) 21:58:20 32 AND t.obj# IN 21:58:20 33 (SELECT DISTINCT d_obj# 21:58:20 34 FROM sys.dependency$ 21:58:20 35 START WITH p_obj# IN -- Oracle-Maintained types 21:58:20 36 (SELECT obj# from sys.obj$ 21:58:20 37 WHERE type#=13 AND 21:58:20 38 bitand(flags, 4194304) = 4194304) 21:58:20 39 CONNECT BY PRIOR d_obj# = p_obj#) 21:58:20 40 AND rownum <=1; 21:58:20 41 do_abort := TRUE; 21:58:20 42 dbms_output.put_line('User tables dependent on Oracle-Maintained types'); 21:58:20 43 dbms_output.put_line('need to be UPGRADED.'); 21:58:20 44 EXCEPTION 21:58:20 45 WHEN NO_DATA_FOUND THEN NULL; 21:58:20 46 END; 21:58:20 47 21:58:20 48 21:58:20 49 If do_abort THEN 21:58:20 50 dbms_output.put_line ('Non-CDB conversion aborting.'); 21:58:20 51 dbms_output.put_line ('For instructions, look for ORA-01722 in this script.'); 21:58:20 52 dbms_output.put_line ('Please resolve these and rerun noncdb_to_pdb.sql.'); 21:58:20 53 RAISE INVALID_NUMBER; 21:58:20 54 END IF; 21:58:20 55 END; 21:58:20 56 / PL/SQL procedure successfully completed. Elapsed: 00:00:03.48 21:58:24 SQL> 21:58:24 SQL> -- END PRE-SCRIPT CHECKS 21:58:24 SQL> --------------------------------------------------------------------------- 21:58:24 SQL> -- NOTE: SHARING bits in OBJ$.FLAGS are: 21:58:24 SQL> -- - 65536 = MDL (Metadata Link) 21:58:24 SQL> -- - 131072 = DL (Data Link, formerly OBL) 21:58:24 SQL> -- - 4294967296 = EDL (Extended Data Link) 21:58:24 SQL> define mdl=65536 21:58:24 SQL> define dl=131072 21:58:24 SQL> define edl=4294967296 21:58:24 SQL> define sharing_bits=(&mdl+&dl+&edl) 21:58:24 SQL> 21:58:24 SQL> select count(*) from sys.obj$ 21:58:24 2 where bitand(flags, &sharing_bits) <> 0; COUNT(*) ---------- 67553 1 row selected. Elapsed: 00:00:00.08 21:58:24 SQL> 21:58:24 SQL> set serveroutput on 21:58:24 SQL> -- 22465938: if obj$ common bits are already set for certain objects, 21:58:24 SQL> -- the noncdb_to_pdb conversion might fail to validate these objects. 21:58:24 SQL> -- When the first time noncdb_to_pdb.sql is run on a legacy database 21:58:24 SQL> -- which is plugged into the CDB, clear any such common bits. 21:58:24 SQL> declare 21:58:24 2 to_pdb varchar2(128); 21:58:24 3 begin 21:58:24 4 select value$ into to_pdb from props$ where name = 'NONCDB_TO_PDB.SQL'; 21:58:24 5 if to_pdb = 'TRUE' then 21:58:24 6 update sys.obj$ 21:58:24 7 set flags = flags - bitand(flags, &sharing_bits) 21:58:24 8 where bitand(flags, &sharing_bits) <> 0; 21:58:24 9 dbms_output.put_line('Common bits are cleared for ' || 21:58:24 10 sql%rowcount || ' objects.'); 21:58:24 11 commit; 21:58:24 12 else 21:58:24 13 dbms_output.put_line('No need to clear common bits twice.'); 21:58:24 14 end if; 21:58:24 15 exception 21:58:24 16 when no_data_found then 21:58:24 17 dbms_output.put_line('No need to clear common bits at all.'); 21:58:24 18 end; 21:58:24 19 / Common bits are cleared for 67553 objects. PL/SQL procedure successfully completed. Elapsed: 00:00:00.34 21:58:24 SQL> 21:58:24 SQL> select count(*) from sys.obj$ 21:58:24 2 where bitand(flags, &sharing_bits) <> 0; COUNT(*) ---------- 0 1 row selected. Elapsed: 00:00:00.02 21:58:24 SQL> 21:58:24 SQL> set serveroutput off; 21:58:24 SQL> 21:58:24 SQL> @@?/rdbms/admin/loc_to_common1.sql 1 21:58:24 SQL> Rem 21:58:24 SQL> Rem $Header: rdbms/admin/loc_to_common1.sql /st_rdbms_12.2.0.1.0/1 2016/09/11 09:42:40 pyam Exp $ 21:58:24 SQL> Rem 21:58:24 SQL> Rem loc_to_common1.sql 21:58:24 SQL> Rem 21:58:24 SQL> Rem Copyright (c) 2014, 2016, Oracle and/or its affiliates. 21:58:24 SQL> Rem All rights reserved. 21:58:24 SQL> Rem 21:58:24 SQL> Rem NAME 21:58:24 SQL> Rem loc_to_common1.sql - helper script for converting local to common 21:58:24 SQL> Rem 21:58:24 SQL> Rem DESCRIPTION 21:58:24 SQL> Rem Does the first set of operations needed to convert local to common. 21:58:24 SQL> Rem Creates object-linked views. 21:58:24 SQL> Rem 21:58:24 SQL> Rem NOTES 21:58:24 SQL> Rem Called by noncdb_to_pdb.sql, apex_to_common.sql, pdb_to_apppdb.sql 21:58:24 SQL> Rem 21:58:24 SQL> Rem BEGIN SQL_FILE_METADATA 21:58:24 SQL> Rem SQL_SOURCE_FILE: rdbms/admin/loc_to_common1.sql 21:58:24 SQL> Rem SQL_SHIPPED_FILE: rdbms/admin/loc_to_common1.sql 21:58:24 SQL> Rem SQL_PHASE: LOC_TO_COMMON1 21:58:24 SQL> Rem SQL_STARTUP_MODE: NORMAL 21:58:24 SQL> Rem SQL_IGNORABLE_ERRORS: NONE 21:58:24 SQL> Rem SQL_CALLING_FILE: rdbms/admin/noncdb_to_pdb.sql 21:58:24 SQL> Rem END SQL_FILE_METADATA 21:58:24 SQL> Rem 21:58:24 SQL> Rem MODIFIED (MM/DD/YY) 21:58:24 SQL> Rem pyam 09/08/16 - RTI 19633354: remove duplicate set &scriptparam 21:58:24 SQL> Rem akruglik 01/25/16 - (22132084): handle Extended Data links 21:58:24 SQL> Rem sankejai 01/22/16 - 16076261: session parameters scoped to container 21:58:24 SQL> Rem pyam 12/22/15 - 21927236: rename pdb_to_fedpdb to pdb_to_apppdb 21:58:24 SQL> Rem akruglik 11/24/15 - (21193922) App Common users are marked with both 21:58:24 SQL> Rem common and App-common bits 21:58:24 SQL> Rem thbaby 09/02/15 - Bug 21774247: handle COMMON_DATA 21:58:24 SQL> Rem juilin 09/01/15 - 21458522: rename syscontext FEDERATION_NAME 21:58:24 SQL> Rem pyam 04/30/15 - 20989123: fix fed flags for user$ 21:58:24 SQL> Rem pyam 04/19/15 - 20795461: change to _application_script for 21:58:24 SQL> Rem pdb_to_apppdb 21:58:24 SQL> Rem syetchin 04/06/15 - Fix for diffs in lrgdbconc0e3ee and 21:58:24 SQL> Rem lrgdbconc0e4ee by mjungerm 21:58:24 SQL> Rem surman 01/08/15 - 19475031: Update SQL metadata 21:58:24 SQL> Rem pyam 09/16/14 - Helper script #1 for converting local objects to 21:58:24 SQL> Rem common in a CDB environment. 21:58:24 SQL> Rem pyam 09/16/14 - Created 21:58:24 SQL> Rem 21:58:24 SQL> 21:58:24 SQL> exec dbms_pdb.noncdb_to_pdb(&&1); PL/SQL procedure successfully completed. Elapsed: 00:00:00.12 21:58:24 SQL> 21:58:24 SQL> COLUMN rootcon NEW_VALUE rootcon 21:58:24 SQL> select decode(&&1, 5, SYS_CONTEXT('USERENV', 'APPLICATION_NAME'), 'CDB$ROOT') 21:58:24 2 rootcon from dual; ROOTCON -------------------------------------------------------------------------------- CDB$ROOT 1 row selected. Elapsed: 00:00:00.00 21:58:24 SQL> 21:58:24 SQL> COLUMN scriptparam NEW_VALUE scriptparam 21:58:24 SQL> select decode(&&1, 5, '"_APPLICATION_SCRIPT"', '"_ORACLE_SCRIPT"') scriptparam 21:58:24 2 from dual; SCRIPTPARAM ---------------- "_ORACLE_SCRIPT" 1 row selected. Elapsed: 00:00:00.00 21:58:24 SQL> 21:58:24 SQL> alter session set container=&rootcon; Session altered. Elapsed: 00:00:00.01 21:58:24 SQL> 21:58:24 SQL> alter session set &scriptparam=true; Session altered. Elapsed: 00:00:00.00 21:58:24 SQL> 21:58:24 SQL> -- CDB Common Users/Roles have 128 (Common) set in user$.spare1 while App 21:58:24 SQL> -- Common Users/Roles have both 128 (Common) and 4096 (App Common) set. 21:58:24 SQL> -- If we are looking for App Common Users/Roles, CDB Common users/Roles get 21:58:24 SQL> -- skipped because we check whether user$.spare1 has both 128 and 4096 set, 21:58:24 SQL> -- but if we are interested in CDB Common Users/Roles, we need to restrict 21:58:24 SQL> -- ourselves to USER$ rows which have 128 but not 4096 set in spare1 21:58:24 SQL> COLUMN cmnusrflag NEW_VALUE cmnusrflag 21:58:24 SQL> select decode(&&1, 5, '4224', '128') cmnusrflag from dual; CMN --- 128 1 row selected. Elapsed: 00:00:00.00 21:58:24 SQL> 21:58:24 SQL> -- if this is for federation conversion, only treat federation objects 21:58:24 SQL> -- as common 21:58:24 SQL> COLUMN fedobjflag NEW_VALUE fedobjflag 21:58:24 SQL> select decode(&&1, 5, '134217728', '0') fedobjflag from dual; F - 0 1 row selected. Elapsed: 00:00:00.00 21:58:24 SQL> 21:58:24 SQL> -- create temporary object-linked view to get list of objects marked as common 21:58:24 SQL> -- in CDB$ROOT 21:58:24 SQL> -- 21:58:24 SQL> -- NOTE: SHARING bits in OBJ$.FLAGS are: 21:58:24 SQL> -- - 65536 = MDL (Metadata Link) 21:58:24 SQL> -- - 131072 = DL (Data Link, formerly OBL) 21:58:24 SQL> -- - 4294967296 = EDL (Extended Data Link) 21:58:24 SQL> define mdl=65536 21:58:24 SQL> define dl=131072 21:58:24 SQL> define edl=4294967296 21:58:24 SQL> define sharing_bits=(&mdl+&dl+&edl) 21:58:24 SQL> 21:58:24 SQL> create or replace view sys.cdb$common_root_objects&pdbid sharing=object as 21:58:24 2 select u.name owner, o.name object_name, o.type# object_type, o.namespace nsp, 21:58:24 3 o.subname object_subname, o.signature object_sig, 21:58:24 4 decode(bitand(o.flags, &sharing_bits), 21:58:24 5 &edl+&mdl, 'EDL', &dl, 'DL', 'MDL') sharing 21:58:24 6 from sys.obj$ o, sys.user$ u 21:58:24 7 where o.owner#=u.user# and bitand(o.flags, &sharing_bits) <> 0 21:58:24 8 and bitand(o.flags,&fedobjflag)=&fedobjflag; View created. Elapsed: 00:00:00.09 21:58:24 SQL> 21:58:24 SQL> -- Bug 21774247: Handle COMMON_DATA tables. 21:58:24 SQL> -- create temporary object-linked view to get list of tables marked as 21:58:24 SQL> -- common_data in Root 21:58:24 SQL> create or replace view sys.cdb$cdata_root_tables&pdbid sharing=object as 21:58:24 2 select u.name owner, o.name object_name 21:58:24 3 from sys.obj$ o, sys.user$ u, sys.tab$ t 21:58:24 4 where o.owner#=u.user# and o.obj#=t.obj# 21:58:24 5 and bitand(t.property, power(2,52))=power(2,52); View created. Elapsed: 00:00:00.02 21:58:25 SQL> 21:58:25 SQL> -- Bug 21774247: Handle COMMON_DATA views. 21:58:25 SQL> -- create temporary object-linked view to get list of views marked as 21:58:25 SQL> -- common_data in Root 21:58:25 SQL> create or replace view sys.cdb$cdata_root_views&pdbid sharing=object as 21:58:25 2 select u.name owner, o.name object_name 21:58:25 3 from sys.obj$ o, sys.user$ u, sys.view$ v 21:58:25 4 where o.owner#=u.user# and o.obj#=v.obj# 21:58:25 5 and bitand(v.property, power(2,52))=power(2,52); View created. Elapsed: 00:00:00.02 21:58:25 SQL> 21:58:25 SQL> create or replace view sys.cdb$cmn_root_types&pdbid sharing=object as 21:58:25 2 select u.name owner, o.name object_name, o.type# object_type, o.namespace nsp, 21:58:25 3 o.subname object_subname, o.signature object_sig, t.hashcode hashcode, 21:58:25 4 decode(bitand(o.flags, &sharing_bits), 21:58:25 5 &edl+&mdl, 'EDL', &dl, 'DL', 'MDL') sharing 21:58:25 6 from sys.obj$ o, sys.user$ u, sys.type$ t where 21:58:25 7 o.type#=13 and o.oid$=t.tvoid and o.owner#=u.user# and 21:58:25 8 bitand(o.flags, &sharing_bits) <> 0 and 21:58:25 9 bitand(o.flags,&fedobjflag)=&fedobjflag; View created. Elapsed: 00:00:00.01 21:58:25 SQL> 21:58:25 SQL> -- object-linked view for list of common users 21:58:25 SQL> create or replace view sys.cdb$common_users&pdbid sharing=object as 21:58:25 2 select name, type# from sys.user$ 21:58:25 3 where bitand(spare1,4224) = &cmnusrflag; View created. Elapsed: 00:00:00.01 21:58:25 SQL> 21:58:25 SQL> -- object-linked view for accessing dependency$ 21:58:25 SQL> create or replace view sys.cdb$rootdeps&pdbid sharing=object as select du.name as owner, do.name as name, do.type# as d_type#, do.namespace as d_namespace,pu.name as referenced_owner, po.name as referenced_name, po.type# as p_type#, po.namespace as p_namespace,d.order#,d.property,d.d_attrs,d.d_reason from sys.obj$ do, sys.obj$ po, sys.user$ du, sys.user$ pu, sys.dependency$ d where du.user#=do.owner# and pu.user#=po.owner# and do.obj#=d_obj# and po.obj#=p_obj#; View created. Elapsed: 00:00:00.03 21:58:25 SQL> 21:58:25 SQL> -- TODO: update to include fed flags 21:58:25 SQL> -- object-linked view for accessing sysauth$: common system privileges 21:58:25 SQL> create or replace view sys.cdb$commonsysprivs&pdbid sharing=object as 21:58:25 2 select u.name, s.privilege# from sys.user$ u, sys.sysauth$ s 21:58:25 3 where s.grantee#=u.user# and bitand(s.option$,8)=8 and s.privilege#<0; View created. Elapsed: 00:00:00.02 21:58:25 SQL> 21:58:25 SQL> -- TODO: update to include fed flags 21:58:25 SQL> -- object-linked view for accessing sysauth$: common role grants 21:58:25 SQL> create or replace view sys.cdb$commonrolegrants&pdbid sharing=object as 21:58:25 2 select u.name, r.name rolename from sys.user$ u, sys.sysauth$ s, sys.user$ r 21:58:25 3 where s.grantee#=u.user# and bitand(s.option$,8)=8 and s.privilege#>0 and 21:58:25 4 s.privilege#=r.user#; View created. Elapsed: 00:00:00.00 21:58:25 SQL> 21:58:25 SQL> -- TODO: update to include fed flags 21:58:25 SQL> -- object-linked view for accessing objauth$ 21:58:25 SQL> create or replace view sys.cdb$commonobjprivs&pdbid sharing=object as 21:58:25 2 select u.name, oa.privilege#, u2.name owner, o.name objname, oa.col# 21:58:25 3 from sys.user$ u, sys.objauth$ oa, sys.obj$ o, sys.user$ u2 21:58:25 4 where oa.grantee#=u.user# and bitand(oa.option$,8)=8 21:58:25 5 and oa.obj#=o.obj# and o.owner#=u2.user#; View created. Elapsed: 00:00:00.02 21:58:25 SQL> 21:58:25 SQL> -- do java long identifier translation in the root if need be 21:58:25 SQL> declare junk varchar2(100); 21:58:25 2 begin 21:58:25 3 junk := dbms_java_test.funcall('-lid_translate_all', ' '); 21:58:25 4 exception when others then null; 21:58:25 5 end; 21:58:25 6 / PL/SQL procedure successfully completed. Elapsed: 00:00:00.08 21:58:25 SQL> 21:58:25 SQL> -- switch into PDB 21:58:25 SQL> alter session set container="&pdbname"; Session altered. Elapsed: 00:00:00.02 21:58:25 SQL> 21:58:25 SQL> create or replace view sys.cdb$common_root_objects&pdbid sharing=object as 21:58:25 2 select u.name owner, o.name object_name, o.type# object_type, o.namespace nsp, 21:58:25 3 o.subname object_subname, o.signature object_sig, 21:58:25 4 decode(bitand(o.flags, &sharing_bits), 21:58:25 5 &edl+&mdl, 'EDL', &dl, 'DL', 'MDL') sharing 21:58:25 6 from sys.obj$ o, sys.user$ u 21:58:25 7 where o.owner#=u.user# and bitand(o.flags, &sharing_bits) <> 0 21:58:25 8 and bitand(o.flags,&fedobjflag)=&fedobjflag; View created. Elapsed: 00:00:00.37 21:58:25 SQL> 21:58:25 SQL> -- Bug 21774247: Handle COMMON_DATA tables. 21:58:25 SQL> -- create temporary object-linked view to get list of tables marked as 21:58:25 SQL> -- common_data in Root 21:58:25 SQL> create or replace view sys.cdb$cdata_root_tables&pdbid sharing=object as 21:58:25 2 select u.name owner, o.name object_name 21:58:25 3 from sys.obj$ o, sys.user$ u, sys.tab$ t 21:58:25 4 where o.owner#=u.user# and o.obj#=t.obj# 21:58:25 5 and bitand(t.property, power(2,52))=power(2,52); View created. Elapsed: 00:00:00.02 21:58:25 SQL> 21:58:25 SQL> -- Bug 21774247: Handle COMMON_DATA views. 21:58:25 SQL> -- create temporary object-linked view to get list of views marked as 21:58:25 SQL> -- common_data in Root 21:58:25 SQL> create or replace view sys.cdb$cdata_root_views&pdbid sharing=object as 21:58:25 2 select u.name owner, o.name object_name 21:58:25 3 from sys.obj$ o, sys.user$ u, sys.view$ v 21:58:25 4 where o.owner#=u.user# and o.obj#=v.obj# 21:58:25 5 and bitand(v.property, power(2,52))=power(2,52); View created. Elapsed: 00:00:00.03 21:58:25 SQL> 21:58:25 SQL> create or replace view sys.cdb$cmn_root_types&pdbid sharing=object as 21:58:25 2 select u.name owner, o.name object_name, o.type# object_type, o.namespace nsp, 21:58:25 3 o.subname object_subname, o.signature object_sig, t.hashcode hashcode, 21:58:25 4 decode(bitand(o.flags, &sharing_bits), 21:58:25 5 &edl+&mdl, 'EDL', &dl, 'DL', 'MDL') sharing 21:58:25 6 from sys.obj$ o, sys.user$ u, sys.type$ t where 21:58:25 7 o.type#=13 and o.oid$=t.tvoid and o.owner#=u.user# and 21:58:25 8 bitand(o.flags, &sharing_bits) <> 0 and 21:58:25 9 bitand(o.flags,&fedobjflag)=&fedobjflag; View created. Elapsed: 00:00:00.04 21:58:25 SQL> 21:58:25 SQL> -- object-linked view for list of common users 21:58:25 SQL> create or replace view sys.cdb$common_users&pdbid sharing=object as 21:58:25 2 select name, type# from sys.user$ 21:58:25 3 where bitand(spare1,4224) = &cmnusrflag; View created. Elapsed: 00:00:00.02 21:58:25 SQL> 21:58:25 SQL> -- object-linked view for accessing dependency$ 21:58:25 SQL> create or replace view sys.cdb$rootdeps&pdbid sharing=object as select du.name as owner, do.name as name, do.type# as d_type#, do.namespace as d_namespace,pu.name as referenced_owner, po.name as referenced_name, po.type# as p_type#, po.namespace as p_namespace,d.order#,d.property,d.d_attrs,d.d_reason from sys.obj$ do, sys.obj$ po, sys.user$ du, sys.user$ pu, sys.dependency$ d where du.user#=do.owner# and pu.user#=po.owner# and do.obj#=d_obj# and po.obj#=p_obj#; View created. Elapsed: 00:00:00.03 21:58:25 SQL> 21:58:25 SQL> -- TODO: update to include fed flags 21:58:25 SQL> -- object-linked view for accessing sysauth$: common system privileges 21:58:25 SQL> create or replace view sys.cdb$commonsysprivs&pdbid sharing=object as 21:58:25 2 select u.name, s.privilege# from sys.user$ u, sys.sysauth$ s 21:58:25 3 where s.grantee#=u.user# and bitand(s.option$,8)=8 and s.privilege#<0; View created. Elapsed: 00:00:00.02 21:58:25 SQL> 21:58:25 SQL> -- TODO: update to include fed flags 21:58:25 SQL> -- object-linked view for accessing sysauth$: common role grants 21:58:25 SQL> create or replace view sys.cdb$commonrolegrants&pdbid sharing=object as 21:58:25 2 select u.name, r.name rolename from sys.user$ u, sys.sysauth$ s, sys.user$ r 21:58:25 3 where s.grantee#=u.user# and bitand(s.option$,8)=8 and s.privilege#>0 and 21:58:25 4 s.privilege#=r.user#; View created. Elapsed: 00:00:00.01 21:58:25 SQL> 21:58:25 SQL> -- TODO: update to include fed flags 21:58:25 SQL> -- object-linked view for accessing objauth$ 21:58:25 SQL> create or replace view sys.cdb$commonobjprivs&pdbid sharing=object as 21:58:25 2 select u.name, oa.privilege#, u2.name owner, o.name objname, oa.col# 21:58:25 3 from sys.user$ u, sys.objauth$ oa, sys.obj$ o, sys.user$ u2 21:58:25 4 where oa.grantee#=u.user# and bitand(oa.option$,8)=8 21:58:25 5 and oa.obj#=o.obj# and o.owner#=u2.user#; View created. Elapsed: 00:00:00.04 21:58:25 SQL> 21:58:25 SQL> create or replace view sys.cdb$objects&pdbid sharing=none as 21:58:25 2 select u.name owner, o.name object_name, o.signature object_sig, 21:58:25 3 o.namespace nsp, o.subname object_subname, o.obj# object_id, 21:58:25 4 o.type# object_type, o.flags flags 21:58:25 5 from sys.obj$ o, sys.user$ u 21:58:25 6 where o.owner#=u.user#; View created. Elapsed: 00:00:00.10 21:58:25 SQL> 21:58:25 SQL> create or replace view sys.cdb$types&pdbid sharing=none as 21:58:25 2 select u.name owner, o.name object_name, o.signature object_sig, 21:58:25 3 o.namespace nsp, o.subname object_subname, o.obj# object_id, 21:58:25 4 o.type# object_type, o.flags flags, t.hashcode hashcode 21:58:25 5 from sys.obj$ o, sys.user$ u, sys.type$ t 21:58:25 6 where o.owner#=u.user# and o.type#=13 and o.oid$=t.tvoid; View created. Elapsed: 00:00:00.01 21:58:25 SQL> 21:58:25 SQL> 21:58:25 SQL> create or replace view sys.cdb$tables&pdbid sharing=none as 21:58:25 2 select * from sys.cdb$objects&pdbid where object_type=2; View created. Elapsed: 00:00:00.01 21:58:25 SQL> 21:58:25 SQL> alter session set &scriptparam=false; Session altered. Elapsed: 00:00:00.00 21:58:25 SQL> 21:58:25 SQL> 21:58:25 SQL> -- 18478064: 21:58:25 SQL> -- In the case that this is run post-upgrade, we should reenable indexes that 21:58:25 SQL> -- were disabled during upgrade. That way, ENABLED$INDEXES created below will 21:58:25 SQL> -- accurately reflect . This is necessary because indexes can be dropped 21:58:25 SQL> -- and recreated during upgrade, and enabled$indexes.objnum would be outdated. 21:58:25 SQL> -- In the non-upgrade case, this will be a no-op, because enabled$indexes 21:58:25 SQL> -- wouldn't exist 21:58:25 SQL> @@?/rdbms/admin/reenable_indexes.sql 21:58:25 SQL> Rem 21:58:25 SQL> Rem $Header: rdbms/admin/reenable_indexes.sql /main/3 2015/02/04 13:57:27 sylin Exp $ 21:58:25 SQL> Rem 21:58:25 SQL> Rem reenable_indexes.sql 21:58:25 SQL> Rem 21:58:25 SQL> Rem Copyright (c) 2014, 2015, Oracle and/or its affiliates. 21:58:25 SQL> Rem All rights reserved. 21:58:25 SQL> Rem 21:58:25 SQL> Rem NAME 21:58:25 SQL> Rem reenable_indexes.sql - 21:58:25 SQL> Rem 21:58:25 SQL> Rem DESCRIPTION 21:58:25 SQL> Rem 21:58:25 SQL> Rem 21:58:25 SQL> Rem NOTES 21:58:25 SQL> Rem 21:58:25 SQL> Rem 21:58:25 SQL> Rem BEGIN SQL_FILE_METADATA 21:58:25 SQL> Rem SQL_SOURCE_FILE: rdbms/admin/reenable_indexes.sql 21:58:25 SQL> Rem SQL_SHIPPED_FILE: rdbms/admin/reenable_indexes.sql 21:58:25 SQL> Rem SQL_PHASE: REENABLE_INDEXES 21:58:25 SQL> Rem SQL_STARTUP_MODE: NORMAL 21:58:25 SQL> Rem SQL_IGNORABLE_ERRORS: NONE 21:58:25 SQL> Rem SQL_CALLING_FILE: rdbms/admin/noncdb_to_pdb.sql 21:58:25 SQL> Rem END SQL_FILE_METADATA 21:58:25 SQL> Rem 21:58:25 SQL> Rem MODIFIED (MM/DD/YY) 21:58:25 SQL> Rem sylin 01/30/15 - bug20422151 - longer identifier 21:58:25 SQL> Rem surman 01/08/15 - 19475031: Update SQL metadata 21:58:25 SQL> Rem pyam 04/03/14 - Reenable indexes based on sys.enabled$indexes 21:58:25 SQL> Rem (formerly in utlprp.sql) 21:58:25 SQL> Rem pyam 04/03/14 - Created 21:58:25 SQL> Rem 21:58:25 SQL> 21:58:25 SQL> Rem 21:58:25 SQL> Rem Declare function local_enquote_name to pass FALSE 21:58:25 SQL> Rem into underlying dbms_assert.enquote_name function 21:58:25 SQL> Rem 21:58:25 SQL> CREATE OR REPLACE FUNCTION local_enquote_name (str varchar2) 21:58:25 2 return varchar2 is 21:58:25 3 begin 21:58:25 4 return dbms_assert.enquote_name(str, FALSE); 21:58:25 5 end local_enquote_name; 21:58:25 6 / Function created. Elapsed: 00:00:00.82 21:58:26 SQL> Rem 21:58:26 SQL> Rem If sys.enabled$index table exists, then re-enable 21:58:26 SQL> Rem list of functional indexes that were enabled prior to upgrade 21:58:26 SQL> Rem The table sys.enabled$index table is created in catupstr.sql 21:58:26 SQL> Rem 21:58:26 SQL> SET serveroutput on 21:58:26 SQL> DECLARE 21:58:26 2 TYPE tab_char IS TABLE OF VARCHAR2(32767) INDEX BY BINARY_INTEGER; 21:58:26 3 commands tab_char; 21:58:26 4 p_null CHAR(1); 21:58:26 5 p_schemaname dbms_id; 21:58:26 6 p_indexname dbms_id; 21:58:26 7 rebuild_idx_msg BOOLEAN := FALSE; 21:58:26 8 non_existent_index exception; 21:58:26 9 recycle_bin_objs exception; 21:58:26 10 cannot_change_obj exception; 21:58:26 11 no_such_table exception; 21:58:26 12 pragma exception_init(non_existent_index, -1418); 21:58:26 13 pragma exception_init(recycle_bin_objs, -38301); 21:58:26 14 pragma exception_init(cannot_change_obj, -30552); 21:58:26 15 pragma exception_init(no_such_table, -942); 21:58:26 16 type cursor_t IS REF CURSOR; 21:58:26 17 reg_cursor cursor_t; 21:58:26 18 21:58:26 19 BEGIN 21:58:26 20 -- Check for existence of the table marking disabled functional indices 21:58:26 21 21:58:26 22 SELECT NULL INTO p_null FROM DBA_OBJECTS 21:58:26 23 WHERE owner = 'SYS' and object_name = 'ENABLED$INDEXES' and 21:58:26 24 object_type = 'TABLE' and rownum <=1; 21:58:26 25 21:58:26 26 -- Select indices to be re-enabled 21:58:26 27 EXECUTE IMMEDIATE q'+ 21:58:26 28 SELECT 'ALTER INDEX ' || 21:58:26 29 local_enquote_name(e.schemaname) || '.' || 21:58:26 30 local_enquote_name(e.indexname) || ' ENABLE' 21:58:26 31 FROM enabled$indexes e, ind$ i 21:58:26 32 WHERE e.objnum = i.obj# AND bitand(i.flags, 1024) != 0 AND 21:58:26 33 bitand(i.property, 16) != 0+' 21:58:26 34 BULK COLLECT INTO commands; 21:58:26 35 21:58:26 36 IF (commands.count() > 0) THEN 21:58:26 37 FOR i IN 1 .. commands.count() LOOP 21:58:26 38 BEGIN 21:58:26 39 EXECUTE IMMEDIATE commands(i); 21:58:26 40 EXCEPTION 21:58:26 41 WHEN NON_EXISTENT_INDEX THEN NULL; 21:58:26 42 WHEN RECYCLE_BIN_OBJS THEN NULL; 21:58:26 43 WHEN CANNOT_CHANGE_OBJ THEN rebuild_idx_msg := TRUE; 21:58:26 44 END; 21:58:26 45 END LOOP; 21:58:26 46 END IF; 21:58:26 47 21:58:26 48 -- Output any indexes in the table that could not be re-enabled 21:58:26 49 -- due to ORA-30552 during ALTER INDEX...ENBLE command 21:58:26 50 21:58:26 51 IF rebuild_idx_msg THEN 21:58:26 52 BEGIN 21:58:26 53 DBMS_OUTPUT.PUT_LINE 21:58:26 54 ('The following indexes could not be re-enabled and may need to be rebuilt:'); 21:58:26 55 21:58:26 56 OPEN reg_cursor FOR 21:58:26 57 'SELECT e.schemaname, e.indexname 21:58:26 58 FROM enabled$indexes e, ind$ i 21:58:26 59 WHERE e.objnum = i.obj# AND bitand(i.flags, 1024) != 0'; 21:58:26 60 21:58:26 61 LOOP 21:58:26 62 FETCH reg_cursor INTO p_schemaname, p_indexname; 21:58:26 63 EXIT WHEN reg_cursor%NOTFOUND; 21:58:26 64 DBMS_OUTPUT.PUT_LINE 21:58:26 65 ('.... INDEX ' || p_schemaname || '.' || p_indexname); 21:58:26 66 END LOOP; 21:58:26 67 CLOSE reg_cursor; 21:58:26 68 21:58:26 69 EXCEPTION 21:58:26 70 WHEN NO_DATA_FOUND THEN CLOSE reg_cursor; 21:58:26 71 WHEN NO_SUCH_TABLE THEN CLOSE reg_cursor; 21:58:26 72 WHEN OTHERS THEN CLOSE reg_cursor; raise; 21:58:26 73 END; 21:58:26 74 21:58:26 75 END IF; 21:58:26 76 21:58:26 77 EXECUTE IMMEDIATE 'DROP TABLE sys.enabled$indexes'; 21:58:26 78 21:58:26 79 EXCEPTION 21:58:26 80 WHEN NO_DATA_FOUND THEN NULL; 21:58:26 81 21:58:26 82 END; 21:58:26 83 / PL/SQL procedure successfully completed. Elapsed: 00:00:00.72 21:58:27 SQL> 21:58:27 SQL> DROP function local_enquote_name; Function dropped. Elapsed: 00:00:01.31 21:58:28 SQL> SET serveroutput off 21:58:28 SQL> 21:58:28 SQL> 21:58:28 SQL> -- record enabled indexes, so that if this script disables them implicitly 21:58:28 SQL> -- we can reenable them in the end 21:58:28 SQL> set serveroutput off 21:58:28 SQL> 21:58:28 SQL> CREATE TABLE sys.enabled$indexes sharing=none ( schemaname, indexname, objnum ) 21:58:28 2 AS select u.name, o1.name, i.obj# from user$ u, obj$ o1, obj$ o2, ind$ i 21:58:28 3 where 21:58:28 4 u.user# = o1.owner# and o1.type# = 1 and o1.obj# = i.obj# 21:58:28 5 and bitand(i.property, 16)= 16 and bitand(i.flags, 1024)=0 21:58:28 6 and i.bo# = o2.obj# and bitand(o2.flags, 2)=0; Table created. Elapsed: 00:00:01.08 21:58:29 SQL> 21:58:29 SQL> -- generate signatures for the common tables which don't have them 21:58:29 SQL> DECLARE 21:58:29 2 cursor c is 21:58:29 3 select r.owner, r.object_name 21:58:29 4 from sys.cdb$common_root_objects&pdbid r, sys.cdb$tables&pdbid p 21:58:29 5 where r.owner=p.owner and r.object_name=p.object_name 21:58:29 6 and r.object_type=2 and p.object_sig is null 21:58:29 7 and p.object_name not in ('OBJ$', 'USER$'); 21:58:29 8 BEGIN 21:58:29 9 FOR tab in c 21:58:29 10 LOOP 21:58:29 11 BEGIN 21:58:29 12 execute immediate 'ALTER TABLE ' || tab.owner || '."' || 21:58:29 13 tab.object_name || '" UPGRADE'; 21:58:29 14 EXCEPTION 21:58:29 15 WHEN OTHERS THEN 21:58:29 16 BEGIN 21:58:29 17 IF (sqlcode = -600 or sqlcode = -602 or sqlcode = -603) THEN 21:58:29 18 raise; 21:58:29 19 END IF; 21:58:29 20 END; 21:58:29 21 END; 21:58:29 22 END LOOP; 21:58:29 23 commit; 21:58:29 24 END; 21:58:29 25 / PL/SQL procedure successfully completed. Elapsed: 00:00:00.90 21:58:30 SQL> 21:58:30 SQL> -- for each table whose signature doesn't match ROOT's, mark its PL/SQL 21:58:30 SQL> -- dependents for local MCode 21:58:30 SQL> DECLARE 21:58:30 2 cursor c is 21:58:30 3 select obj# 21:58:30 4 from sys.obj$ o, sys.user$ u, sys.cdb$common_root_objects&pdbid ro 21:58:30 5 where o.type# <> 4 and u.name=ro.owner and u.user#=o.owner# 21:58:30 6 and o.name=ro.object_name and o.type#=ro.object_type and obj# in 21:58:30 7 (select d_obj# from sys.dependency$ where p_obj# in 21:58:30 8 (select p.object_id from sys.CDB$common_root_objects&pdbid r, 21:58:30 9 sys.cdb$tables&pdbid p 21:58:30 10 where r.owner=p.owner and r.object_name=p.object_name 21:58:30 11 and r.object_type=2 and r.object_sig <> p.object_sig)); 21:58:30 12 BEGIN 21:58:30 13 FOR obj in c 21:58:30 14 LOOP 21:58:30 15 update sys.obj$ set flags=flags+33554432-bitand(flags, 33554432) 21:58:30 16 where obj#=obj.obj#; 21:58:30 17 END LOOP; 21:58:30 18 END; 21:58:30 19 / PL/SQL procedure successfully completed. Elapsed: 00:00:01.38 21:58:32 SQL> 21:58:32 SQL> @@?/rdbms/admin/loc_to_common2.sql 0 21:58:32 SQL> Rem 21:58:32 SQL> Rem $Header: rdbms/admin/loc_to_common2.sql /main/12 2016/07/12 12:17:42 pyam Exp $ 21:58:32 SQL> Rem 21:58:32 SQL> Rem loc_to_common2.sql 21:58:32 SQL> Rem 21:58:32 SQL> Rem Copyright (c) 2014, 2016, Oracle and/or its affiliates. 21:58:32 SQL> Rem All rights reserved. 21:58:32 SQL> Rem 21:58:32 SQL> Rem NAME 21:58:32 SQL> Rem loc_to_common2.sql - helper script for converting local to common 21:58:32 SQL> Rem 21:58:32 SQL> Rem DESCRIPTION 21:58:32 SQL> Rem Does the second set of operations needed to convert local to common. 21:58:32 SQL> Rem 21:58:32 SQL> Rem BEGIN SQL_FILE_METADATA 21:58:32 SQL> Rem SQL_SOURCE_FILE: rdbms/admin/loc_to_common2.sql 21:58:32 SQL> Rem SQL_SHIPPED_FILE: rdbms/admin/loc_to_common2.sql 21:58:32 SQL> Rem SQL_PHASE: LOC_TO_COMMON2 21:58:32 SQL> Rem SQL_STARTUP_MODE: NORMAL 21:58:32 SQL> Rem SQL_IGNORABLE_ERRORS: NONE 21:58:32 SQL> Rem SQL_CALLING_FILE: rdbms/admin/noncdb_to_pdb.sql 21:58:32 SQL> Rem END SQL_FILE_METADATA 21:58:32 SQL> Rem 21:58:32 SQL> Rem 21:58:32 SQL> Rem 21:58:32 SQL> Rem NOTES 21:58:32 SQL> Rem Called by noncdb_to_pdb.sql, apex_to_common.sql, pdb_to_apppdb.sql 21:58:32 SQL> Rem 21:58:32 SQL> Rem MODIFIED (MM/DD/YY) 21:58:32 SQL> Rem pyam 06/29/16 - 23184418: truncate data link tables in app pdb 21:58:32 SQL> Rem tojhuan 03/22/16 - 22465938: keep common views in status INVALID 21:58:32 SQL> Rem akruglik 01/15/16 - (22132084) replace COMMON_DATA with EXTENDED DATA 21:58:32 SQL> Rem pyam 12/22/15 - 21927236: rename pdb_to_fedpdb to pdb_to_apppdb 21:58:32 SQL> Rem pyam 12/13/15 - LRG 18533922: dont invalidate 21:58:32 SQL> Rem STANDARD/DBMS_STANDARD 21:58:32 SQL> Rem akruglik 11/24/15 - (21193922) App Common users are marked with both 21:58:32 SQL> Rem common and App-common bits 21:58:32 SQL> Rem thbaby 09/02/15 - Bug 21774247: handle COMMON_DATA 21:58:32 SQL> Rem pyam 06/24/15 - 21199445: mark converted objects as invalid 21:58:32 SQL> Rem kquinn 05/18/15 - 21095719: improve performance 21:58:32 SQL> Rem pyam 04/30/15 - 20989123: fix fed flags for user$ 21:58:32 SQL> Rem surman 01/08/15 - 19475031: Update SQL metadata 21:58:32 SQL> Rem pyam 09/16/14 - Helper script #2 for converting local objects to 21:58:32 SQL> Rem common in a CDB environment. 21:58:32 SQL> Rem pyam 09/16/14 - Created 21:58:32 SQL> Rem 21:58:32 SQL> 21:58:32 SQL> Rem fed == &&1; 21:58:32 SQL> 21:58:32 SQL> -- CDB Common Users/Roles have 128 (Common) set in user$.spare1 while App 21:58:32 SQL> -- Common Users/Roles have both 128 (Common) and 4096 (App Common) set. 21:58:32 SQL> COLUMN cmnusrflag NEW_VALUE cmnusrflag 21:58:32 SQL> select decode(&&1, 1, '4224', '128') cmnusrflag from dual; CMN --- 128 1 row selected. Elapsed: 00:00:00.00 21:58:32 SQL> 21:58:32 SQL> COLUMN fedobjflag NEW_VALUE fedobjflag 21:58:32 SQL> select decode(&&1, 1, '134217728', '0') fedobjflag from dual; F - 0 1 row selected. Elapsed: 00:00:00.00 21:58:32 SQL> 21:58:32 SQL> -- mark users and roles in our PDB as common if they exist as common in ROOT 21:58:32 SQL> -- also compare the type# to ensure that we match users in PDB with users in 21:58:32 SQL> -- ROOT (and same for roles) 21:58:32 SQL> update sys.user$ a set a.spare1=a.spare1+&cmnusrflag where a.user# in ( 21:58:32 2 select p.user# from sys.cdb$common_users&pdbid r, sys.user$ p 21:58:32 3 where r.name=p.name and r.type#=p.type# and bitand(p.spare1, 4224)=0); 0 rows updated. Elapsed: 00:00:00.01 21:58:32 SQL> 21:58:32 SQL> -- TODO: fed 21:58:32 SQL> -- mark privileges in our PDB as common if they exist as common in ROOT 21:58:32 SQL> DECLARE 21:58:32 2 cursor c is 21:58:32 3 select s.grantee#, s.privilege# 21:58:32 4 from sys.sysauth$ s, sys.user$ u, sys.cdb$commonsysprivs&pdbid r 21:58:32 5 where u.user#=s.grantee# and u.name=r.name and s.privilege#=r.privilege# 21:58:32 6 and bitand(s.option$,8)=0; 21:58:32 7 BEGIN 21:58:32 8 FOR obj in c 21:58:32 9 LOOP 21:58:32 10 BEGIN 21:58:32 11 update sys.sysauth$ set option$=option$+12+bitand(option$,3)*15 21:58:32 12 where grantee#=obj.grantee# and privilege#=obj.privilege#; 21:58:32 13 END; 21:58:32 14 END LOOP; 21:58:32 15 commit; 21:58:32 16 END; 21:58:32 17 / PL/SQL procedure successfully completed. Elapsed: 00:00:00.34 21:58:32 SQL> 21:58:32 SQL> 21:58:32 SQL> -- TODO: fed 21:58:32 SQL> DECLARE 21:58:32 2 cursor c is 21:58:32 3 select s.grantee#, s.privilege# 21:58:32 4 from sys.sysauth$ s, sys.user$ u, sys.cdb$commonrolegrants&pdbid r, 21:58:32 5 sys.user$ ru 21:58:32 6 where u.user#=s.grantee# and u.name=r.name and r.rolename=ru.name and 21:58:32 7 s.privilege#=ru.user# and bitand(s.option$,8)=0; 21:58:32 8 BEGIN 21:58:32 9 FOR obj in c 21:58:32 10 LOOP 21:58:32 11 BEGIN 21:58:32 12 update sys.sysauth$ set option$=option$+12+bitand(option$,3)*15 21:58:32 13 where grantee#=obj.grantee# and privilege#=obj.privilege#; 21:58:32 14 END; 21:58:32 15 END LOOP; 21:58:32 16 commit; 21:58:32 17 END; 21:58:32 18 / PL/SQL procedure successfully completed. Elapsed: 00:00:00.01 21:58:32 SQL> 21:58:32 SQL> -- TODO: fed 21:58:32 SQL> DECLARE 21:58:32 2 cursor c is 21:58:32 3 select oa.privilege#, oa.grantee#, oa.obj#, oa.col# 21:58:32 4 from sys.objauth$ oa, sys.user$ u, sys.cdb$commonobjprivs&pdbid r, 21:58:32 5 sys.obj$ o, sys.user$ ou 21:58:32 6 where oa.privilege#=r.privilege# and oa.grantee#=u.user# and 21:58:32 7 u.name=r.name and o.name=r.objname and oa.obj#=o.obj# and 21:58:32 8 ou.name=r.owner and o.owner#=ou.user# and bitand(oa.option$,8)=0 and 21:58:32 9 ((oa.col# is null and r.col# is null) or oa.col#=r.col#); 21:58:32 10 21:58:32 11 BEGIN 21:58:32 12 FOR obj in c 21:58:32 13 LOOP 21:58:32 14 BEGIN 21:58:32 15 IF (obj.col# is null) THEN 21:58:32 16 update sys.objauth$ set option$=option$+12+bitand(option$,3)*15 21:58:32 17 where grantee#=obj.grantee# and privilege#=obj.privilege# and 21:58:32 18 obj#=obj.obj# and col# is null; 21:58:32 19 ELSE 21:58:32 20 update sys.objauth$ set option$=option$+12+bitand(option$,3)*15 21:58:32 21 where grantee#=obj.grantee# and privilege#=obj.privilege# and 21:58:32 22 obj#=obj.obj# and col# = obj.col#; 21:58:32 23 END IF; 21:58:32 24 21:58:32 25 END; 21:58:32 26 END LOOP; 21:58:32 27 commit; 21:58:32 28 END; 21:58:32 29 / PL/SQL procedure successfully completed. Elapsed: 00:00:00.77 21:58:33 SQL> 21:58:33 SQL> -- mark objects in our PDB as common if they exist as common in ROOT 21:58:33 SQL> -- mark them as invalid if they're of a type that can be invalid 21:58:33 SQL> -- LRG 18533922: refrain from invalidating STANDARD and DBMS_STANDARD 21:58:33 SQL> -- BUG 22465938: there is no guarantee that views are all validated 21:58:33 SQL> -- before noncdb_to_pdb/apex_to_common/pdb_to_apppdb, leading to 21:58:33 SQL> -- failure of follow-up loc_to_common steps. It is more robust to 21:58:33 SQL> -- keep their status INVALID (6) as we do on the other source objects. 21:58:33 SQL> -- 21:58:33 SQL> -- NOTE: SHARING bits in OBJ$.FLAGS are: 21:58:33 SQL> -- - 65536 = MDL (Metadata Link) 21:58:33 SQL> -- - 131072 = DL (Data Link, formerly OBL) 21:58:33 SQL> -- - 4294967296 = EDL (Extended Data Link) 21:58:33 SQL> define mdl=65536 21:58:33 SQL> define dl=131072 21:58:33 SQL> define edl=4294967296 21:58:33 SQL> define sharing_bits=(&mdl+&dl+&edl) 21:58:33 SQL> 21:58:33 SQL> DECLARE 21:58:33 2 cursor c is 21:58:33 3 select p.object_id, 21:58:33 4 p.flags-bitand(p.flags, &sharing_bits+&fedobjflag) flags, 21:58:33 5 decode(r.sharing, 'MDL', &mdl, 'DL', &dl, &edl+&mdl) sharing_flag, 21:58:33 6 case when p.object_type in (4, 7, 8, 9, 11, 12, 14, 22, 32, 33, 87) 21:58:33 7 and p.object_subname is null 21:58:33 8 then 6 21:58:33 9 else 1 21:58:33 10 end new_status 21:58:33 11 from sys.cdb$common_root_objects&pdbid r, sys.cdb$objects&pdbid p 21:58:33 12 where r.owner=p.owner and r.object_name=p.object_name 21:58:33 13 and r.object_type=p.object_type and r.object_type != 13 and r.nsp=p.nsp 21:58:33 14 and (p.object_subname is null and r.object_subname is null 21:58:33 15 or r.object_subname=p.object_subname) 21:58:33 16 and decode(bitand(p.flags, &sharing_bits), 21:58:33 17 &edl+&mdl, 'EDL', &dl, 'DL', &mdl, 'MDL', 'NONE') 21:58:33 18 <> r.sharing 21:58:33 19 and not (r.owner='SYS' and 21:58:33 20 (r.object_name='STANDARD' or r.object_name='DBMS_STANDARD') and 21:58:33 21 (r.object_type in (9, 11))); 21:58:33 22 cursor ctyp is 21:58:33 23 select p.object_id, 21:58:33 24 p.flags-bitand(p.flags, &sharing_bits+&fedobjflag) flags, 21:58:33 25 decode(r.sharing, 'MDL', &mdl, 'DL', &dl, &edl+&mdl) sharing_flag 21:58:33 26 from sys.cdb$cmn_root_types&pdbid r, sys.cdb$types&pdbid p 21:58:33 27 where r.owner=p.owner and r.object_name=p.object_name 21:58:33 28 and (p.object_subname is null and r.object_subname is null 21:58:33 29 or r.object_subname=p.object_subname) 21:58:33 30 and decode(bitand(p.flags, &sharing_bits), 21:58:33 31 &edl+&mdl, 'EDL', &dl, 'DL', &mdl, 'MDL', 'NONE')<>r.sharing 21:58:33 32 and p.object_sig=r.object_sig and p.hashcode=r.hashcode; 21:58:33 33 BEGIN 21:58:33 34 FOR obj in c 21:58:33 35 LOOP 21:58:33 36 BEGIN 21:58:33 37 update sys.obj$ set flags=(obj.flags + obj.sharing_flag + &fedobjflag), 21:58:33 38 status=obj.new_status 21:58:33 39 where obj#=obj.object_id; 21:58:33 40 END; 21:58:33 41 END LOOP; 21:58:33 42 FOR obj in ctyp 21:58:33 43 LOOP 21:58:33 44 BEGIN 21:58:33 45 update sys.obj$ set flags=(obj.flags + obj.sharing_flag + &fedobjflag), 21:58:33 46 status=6 21:58:33 47 where obj#=obj.object_id; 21:58:33 48 END; 21:58:33 49 END LOOP; 21:58:33 50 commit; 21:58:33 51 END; 21:58:33 52 / PL/SQL procedure successfully completed. Elapsed: 00:00:10.39 21:58:43 SQL> 21:58:43 SQL> -- BUG 23184418: truncate and drop index for datalink table. 21:58:43 SQL> alter session set &scriptparam=true; Session altered. Elapsed: 00:00:00.00 21:58:43 SQL> 21:58:43 SQL> -- make sure link flags are reloaded properly 21:58:43 SQL> alter system flush shared_pool; System altered. Elapsed: 00:00:00.06 21:58:43 SQL> 21:58:43 SQL> DECLARE 21:58:43 2 cursor c is 21:58:43 3 select p.object_id, p.object_type, 21:58:43 4 '"' || p.owner || '"."' || p.object_name || '"' as name 21:58:43 5 from sys.cdb$objects&pdbid p 21:58:43 6 where p.object_type = 2 and bitand(p.flags, &dl) = &dl 21:58:43 7 and bitand(p.flags, 134217728)=&fedobjflag; 21:58:43 8 BEGIN 21:58:43 9 FOR obj in c 21:58:43 10 LOOP 21:58:43 11 execute immediate 'TRUNCATE TABLE '|| obj.name; 21:58:43 12 21:58:43 13 FOR ind IN 21:58:43 14 (select '"'||u.name||'"."'||o.name||'"' as name 21:58:43 15 from obj$ o, user$ u, (select unique i.obj# as idx_obj 21:58:43 16 from ind$ i 21:58:43 17 where bo# = obj.object_id and i.type# = 1 and 21:58:43 18 i.obj# not in (select nvl(enabled,0) from cdef$)) 21:58:43 19 where o.obj# = idx_obj and user# = owner#) 21:58:43 20 LOOP 21:58:43 21 execute immediate 'DROP INDEX '|| ind.name; 21:58:43 22 END LOOP; 21:58:43 23 END LOOP; 21:58:43 24 END; 21:58:43 25 / PL/SQL procedure successfully completed. Elapsed: 00:00:05.93 21:58:49 SQL> alter session set &scriptparam=false; Session altered. Elapsed: 00:00:00.00 21:58:49 SQL> 21:58:49 SQL> -- Bug 21774247: Handle COMMON_DATA tables (this includes tables for which 21:58:49 SQL> -- COMMON_DATA was specified explicitly as well as EXTENDED DATA tables 21:58:49 SQL> -- (for which COMMON_DATA bit will be getting set for the time being.)) 21:58:49 SQL> -- Retrieve all tables marked as COMMON_DATA in Root and mark them as 21:58:49 SQL> -- COMMON_DATA in PDB (if not already marked as COMMON_DATA). 21:58:49 SQL> DECLARE 21:58:49 2 cursor c is 21:58:49 3 select p.object_id 21:58:49 4 from sys.cdb$cdata_root_tables&pdbid r, sys.cdb$objects&pdbid p 21:58:49 5 where r.owner=p.owner and r.object_name=p.object_name; 21:58:49 6 BEGIN 21:58:49 7 FOR obj in c 21:58:49 8 LOOP 21:58:49 9 BEGIN 21:58:49 10 update sys.tab$ t set t.property=(t.property + power(2,52)) 21:58:49 11 where bitand(t.property, power(2,52)) = 0 21:58:49 12 and t.obj#=obj.object_id; 21:58:49 13 END; 21:58:49 14 END LOOP; 21:58:49 15 commit; 21:58:49 16 END; 21:58:49 17 / PL/SQL procedure successfully completed. Elapsed: 00:00:00.02 21:58:49 SQL> 21:58:49 SQL> -- Bug 21774247: Handle COMMON_DATA views (this includes views for which 21:58:49 SQL> -- COMMON_DATA was specified explicitly as well as EXTENDED DATA views 21:58:49 SQL> -- (for which COMMON_DATA bit will be getting set for the time being.)) 21:58:49 SQL> -- Retrieve all views marked as COMMON_DATA in Root and mark them as 21:58:49 SQL> -- COMMON_DATA in PDB (if not already marked as COMMON_DATA). 21:58:49 SQL> DECLARE 21:58:49 2 cursor c is 21:58:49 3 select p.object_id 21:58:49 4 from sys.cdb$cdata_root_views&pdbid r, sys.cdb$objects&pdbid p 21:58:49 5 where r.owner=p.owner and r.object_name=p.object_name; 21:58:49 6 BEGIN 21:58:49 7 FOR obj in c 21:58:49 8 LOOP 21:58:49 9 BEGIN 21:58:49 10 update sys.view$ v set v.property=(v.property + power(2,52)) 21:58:49 11 where bitand(v.property, power(2,52)) = 0 21:58:49 12 and v.obj#=obj.object_id; 21:58:49 13 END; 21:58:49 14 END LOOP; 21:58:49 15 commit; 21:58:49 16 END; 21:58:49 17 / PL/SQL procedure successfully completed. Elapsed: 00:00:00.81 21:58:50 SQL> 21:58:50 SQL> alter system flush shared_pool; System altered. Elapsed: 00:00:00.03 21:58:50 SQL> 21:58:50 SQL> 21:58:50 SQL> -- Mark types created via xml schema registration as local. Only need to do 21:58:50 SQL> -- this for common types with system generated name. 21:58:50 SQL> DECLARE 21:58:50 2 cursor c is 21:58:50 3 select p.obj#, p.flags oldflags 21:58:50 4 from sys.obj$ p, sys.dependency$ d, sys.obj$ o 21:58:50 5 where p.type#=13 and d.p_obj#=p.obj# and d.d_obj#=o.obj# and o.type#=55 21:58:50 6 and bitand(p.flags, &sharing_bits) != 0 21:58:50 7 and ((regexp_instr(p.name, '[0-9]_T',1,1) != 0 and 21:58:50 8 regexp_instr(p.name, '[0-9]_T',1,1) = length(p.name)-2) or 21:58:50 9 (regexp_instr(p.name, '[0-9]_COLL',1,1) != 0 and 21:58:50 10 regexp_instr(p.name, '[0-9]_COLL',1,1) = length(p.name)-4)); 21:58:50 11 BEGIN 21:58:50 12 FOR obj in c 21:58:50 13 LOOP 21:58:50 14 update sys.obj$ set flags=(obj.oldflags - bitand(obj.oldflags, &sharing_bits)) 21:58:50 15 where obj#=obj.obj#; 21:58:50 16 END LOOP; 21:58:50 17 END; 21:58:50 18 / PL/SQL procedure successfully completed. Elapsed: 00:00:00.20 21:58:50 SQL> 21:58:50 SQL> -- As types with system generated name created via xml schema registration 21:58:50 SQL> -- are marked as local, mark default tables depending on those types as 21:58:50 SQL> -- local too, plus default tables with system generated table name. 21:58:50 SQL> -- Only need to do this for common tables. 21:58:50 SQL> DECLARE 21:58:50 2 cursor c is 21:58:50 3 with v as (select p.obj#, p.flags pflags 21:58:50 4 from sys.obj$ p, sys.dependency$ d, sys.obj$ o 21:58:50 5 where p.type#=13 and p.obj#=d.p_obj# and d.d_obj#=o.obj# 21:58:50 6 and o.type#=55) 21:58:50 7 select distinct o1.obj#, o1.flags oldflags 21:58:50 8 from v, sys.dependency$ d1, sys.obj$ o1 21:58:50 9 where v.obj#=d1.p_obj# and d1.d_obj#=o1.obj# and o1.type#=2 21:58:50 10 and bitand(o1.flags, &sharing_bits) != 0 21:58:50 11 and ((bitand(pflags, &sharing_bits) = 0) or 21:58:50 12 (regexp_instr(o1.name, '[0-9]_TAB',1,1) != 0 and 21:58:50 13 regexp_instr(o1.name, '[0-9]_TAB',1,1) = length(o1.name)-3)); 21:58:50 14 BEGIN 21:58:50 15 FOR obj in c 21:58:50 16 LOOP 21:58:50 17 BEGIN 21:58:50 18 update sys.obj$ set flags=(obj.oldflags - bitand(obj.oldflags, &sharing_bits)) 21:58:50 19 where obj#=obj.obj#; 21:58:50 20 END; 21:58:50 21 END LOOP; 21:58:50 22 END; 21:58:50 23 / PL/SQL procedure successfully completed. Elapsed: 00:00:00.26 21:58:51 SQL> 21:58:51 SQL> -- As default tables created via xml schema registration are marked as local, 21:58:51 SQL> -- mark all nested tables as local too if its parent table is local. 21:58:51 SQL> -- Only need to do this for common nested tables. 21:58:51 SQL> declare 21:58:51 2 -- get local O-R xmltype parent table owned by common users 21:58:51 3 cursor ortabq is 21:58:51 4 select n.owner, n.parent_table_name 21:58:51 5 from sys.obj$ o, dba_users u, dba_nested_tables n, 21:58:51 6 ( select owner, table_name from dba_xml_tables 21:58:51 7 where storage_type='OBJECT-RELATIONAL' 21:58:51 8 union 21:58:51 9 select owner, table_name from dba_xml_tab_cols 21:58:51 10 where storage_type='OBJECT-RELATIONAL' 21:58:51 11 ) t 21:58:51 12 where n.owner = t.owner 21:58:51 13 and n.parent_table_name = t.table_name 21:58:51 14 and t.owner = u.username 21:58:51 15 and u.common='YES' 21:58:51 16 and u.user_id = o.owner# 21:58:51 17 and o.name = t.table_name 21:58:51 18 and bitand(o.flags, &sharing_bits) = 0 21:58:51 19 order by n.owner, n.parent_table_name; 21:58:51 20 21:58:51 21 -- get the hierarchy of nested tables, given a parent table name and owner 21:58:51 22 cursor ntq(oname varchar2, pname varchar2) is 21:58:51 23 select n.owner, n.parent_table_name, n.table_name 21:58:51 24 from dba_nested_tables n 21:58:51 25 where n.owner=oname 21:58:51 26 start with parent_table_name=pname 21:58:51 27 connect by prior table_name=parent_table_name 21:58:51 28 order by n.owner, n.parent_table_name, n.table_name; 21:58:51 29 21:58:51 30 -- get obj$ entries for the common nested tables, given its owner and name 21:58:51 31 cursor c (owner_name varchar2, obj_name varchar2) is 21:58:51 32 select o.obj#, o.flags oldflags 21:58:51 33 from sys.obj$ o, dba_users u 21:58:51 34 where o.owner#=u.user_id and u.username=owner_name and o.name=obj_name 21:58:51 35 and bitand(o.flags, &sharing_bits) != 0; 21:58:51 36 begin 21:58:51 37 for rec in ortabq loop 21:58:51 38 for ntrec in ntq(rec.owner, rec.parent_table_name) loop 21:58:51 39 for obj in c(ntrec.owner, ntrec.table_name) loop 21:58:51 40 begin 21:58:51 41 update sys.obj$ 21:58:51 42 set flags=(obj.oldflags - bitand(obj.oldflags, &sharing_bits)) 21:58:51 43 where obj#=obj.obj#; 21:58:51 44 end; 21:58:51 45 end loop; 21:58:51 46 end loop; 21:58:51 47 end loop; 21:58:51 48 end; 21:58:51 49 / PL/SQL procedure successfully completed. Elapsed: 00:00:05.37 21:58:56 SQL> 21:58:56 SQL> select to_char(sysdate, 'Dy DD-Mon-YYYY HH24:MI:SS') from dual; TO_CHAR(SYSDATE,'DYDD-MON-YYYYHH24:MI:SS') ------------------------------------------ Sun 22-Jul-2018 21:58:56 1 row selected. Elapsed: 00:00:00.00 21:58:56 SQL> 21:58:56 SQL> -- get rid of idl_ub1$ rows for MDL java objects 21:58:56 SQL> delete from sys.idl_ub1$ where obj# in (select obj# from sys.obj$ where bitand(flags, 65536)=65536 and type# in (28,29,30,56)); 40625 rows deleted. Elapsed: 00:00:52.52 21:59:48 SQL> commit; Commit complete. Elapsed: 00:00:00.27 21:59:49 SQL> 21:59:49 SQL> -- do java long identifier translation in the pdb if need be 21:59:49 SQL> declare junk varchar2(100); 21:59:49 2 begin 21:59:49 3 junk := dbms_java_test.funcall('-lid_translate_all', ' '); 21:59:49 4 exception when others then null; 21:59:49 5 end; 21:59:49 6 / PL/SQL procedure successfully completed. Elapsed: 00:00:04.56 21:59:53 SQL> 21:59:53 SQL> -- normalize dependencies for MDL java objects (includes classes.bin objects) 21:59:53 SQL> delete from sys.dependency$ where d_obj# in (select obj# from sys.obj$ where bitand(flags,65536)=65536 and type# in (29,56)); 77300 rows deleted. Elapsed: 00:00:09.00 22:00:02 SQL> 22:00:02 SQL> insert into sys.dependency$ (select do.obj#,do.stime,order#,po.obj#,po.stime,do.owner#,property,d_attrs,d_reason from sys.obj$ do,sys.user$ du,sys.obj$ po,sys.user$ pu,sys.cdb$rootdeps&pdbid rd where du.user#=do.owner# and pu.user#=po.owner# and do.name=rd.name and du.name=owner and do.type#=d_type# and po.name=referenced_name and pu.name=referenced_owner and po.type#=p_type# and bitand(do.flags,65536)=65536 and do.type# in (29,56)); 77300 rows created. Elapsed: 00:00:14.13 22:00:16 SQL> 22:00:16 SQL> commit; Commit complete. Elapsed: 00:00:00.02 22:00:16 SQL> alter system flush shared_pool; System altered. Elapsed: 00:00:00.04 22:00:16 SQL> 22:00:16 SQL> select owner#, name from sys.obj$ where bitand(flags, 33554432)=33554432 22:00:16 2 order by 1, 2; no rows selected Elapsed: 00:00:00.02 22:00:17 SQL> 22:00:17 SQL> -- pass in 1 to indicate that we need to invalidate STANDARD and DBMS_STANDARD 22:00:17 SQL> @@?/rdbms/admin/loc_to_common3.sql 1 22:00:17 SQL> Rem 22:00:17 SQL> Rem $Header: rdbms/admin/loc_to_common3.sql /main/6 2016/01/13 14:08:10 pyam Exp $ 22:00:17 SQL> Rem 22:00:17 SQL> Rem loc_to_common3.sql 22:00:17 SQL> Rem 22:00:17 SQL> Rem Copyright (c) 2014, 2015, Oracle and/or its affiliates. 22:00:17 SQL> Rem All rights reserved. 22:00:17 SQL> Rem 22:00:17 SQL> Rem NAME 22:00:17 SQL> Rem loc_to_common3.sql - helper script for converting local to common 22:00:17 SQL> Rem 22:00:17 SQL> Rem DESCRIPTION 22:00:17 SQL> Rem Does the third set of operations needed to convert local to common. 22:00:17 SQL> Rem Does utlip + utlrp + related tasks. 22:00:17 SQL> Rem 22:00:17 SQL> Rem NOTES 22:00:17 SQL> Rem Called by noncdb_to_pdb.sql, apex_to_common.sql, pdb_to_apppdb.sql 22:00:17 SQL> Rem 22:00:17 SQL> Rem BEGIN SQL_FILE_METADATA 22:00:17 SQL> Rem SQL_SOURCE_FILE: rdbms/admin/loc_to_common3.sql 22:00:17 SQL> Rem SQL_SHIPPED_FILE: rdbms/admin/loc_to_common3.sql 22:00:17 SQL> Rem SQL_PHASE: LOC_TO_COMMON3 22:00:17 SQL> Rem SQL_STARTUP_MODE: NORMAL 22:00:17 SQL> Rem SQL_IGNORABLE_ERRORS: NONE 22:00:17 SQL> Rem SQL_CALLING_FILE: rdbms/admin/noncdb_to_pdb.sql 22:00:17 SQL> Rem END SQL_FILE_METADATA 22:00:17 SQL> Rem 22:00:17 SQL> Rem 22:00:17 SQL> Rem MODIFIED (MM/DD/YY) 22:00:17 SQL> Rem pyam 12/22/15 - 21927236: rename pdb_to_fedpdb to pdb_to_apppdb 22:00:17 SQL> Rem pyam 12/13/15 - LRG 18533922: convert STANDARD/DBMS_STANDARD if 22:00:17 SQL> Rem necessary 22:00:17 SQL> Rem pyam 10/21/15 - 12172090: move up marking valid of old type 22:00:17 SQL> Rem versions 22:00:17 SQL> Rem vperiwal 03/26/15 - 20172151: add immediate instances = all for close 22:00:17 SQL> Rem surman 01/08/15 - 19475031: Update SQL metadata 22:00:17 SQL> Rem pyam 09/16/14 - Helper script #3 for converting local objects to 22:00:17 SQL> Rem common in a CDB environment. 22:00:17 SQL> Rem pyam 09/16/14 - Created 22:00:17 SQL> Rem 22:00:17 SQL> 22:00:17 SQL> Rem invalidate_standard == &&1; 22:00:17 SQL> 22:00:17 SQL> -- if requested, invalidate STANDARD and DBMS_STANDARD and mark them common 22:00:17 SQL> update obj$ set status=6, flags=flags-bitand(flags,196608)+65536 22:00:17 2 where &&1=1 and name in ('STANDARD', 'DBMS_STANDARD'); 4 rows updated. Elapsed: 00:00:00.02 22:00:17 SQL> commit; Commit complete. Elapsed: 00:00:00.00 22:00:17 SQL> 22:00:17 SQL> @@?/rdbms/admin/utlip 22:00:17 SQL> Rem Copyright (c) 1998, 2016, Oracle and/or its affiliates. 22:00:17 SQL> Rem All rights reserved. 22:00:17 SQL> Rem 22:00:17 SQL> Rem NAME 22:00:17 SQL> Rem utlip.sql - UTiLity script to Invalidate Pl/sql 22:00:17 SQL> Rem 22:00:17 SQL> Rem DESCRIPTION 22:00:17 SQL> Rem 22:00:17 SQL> Rem *WARNING* *WARNING* *WARNING* *WARNING* *WARNING* *WARNING* 22:00:17 SQL> Rem 22:00:17 SQL> Rem Do not run this script directly. 22:00:17 SQL> Rem 22:00:17 SQL> Rem utlip.sql is automatically executed when required for database 22:00:17 SQL> Rem upgrades. 22:00:17 SQL> Rem 22:00:17 SQL> Rem Use utlirp.sql if you are looking to invalidate and recompile 22:00:17 SQL> Rem PL/SQL for a 32-bit to 64-bit conversion. Use dbmsupgnv.sql 22:00:17 SQL> Rem to convert all PL/SQL to NATIVE or dbmsupgin.sql to convert all 22:00:17 SQL> Rem PL/SQL to INTERPRETED. 22:00:17 SQL> Rem 22:00:17 SQL> Rem set serveroutput must be set to off before 22:00:17 SQL> Rem invoking this script otherwise deadlocks 22:00:17 SQL> Rem and internal errors may result. 22:00:17 SQL> Rem 22:00:17 SQL> Rem *WARNING* *WARNING* *WARNING* *WARNING* *WARNING* *WARNING* 22:00:17 SQL> Rem 22:00:17 SQL> Rem MODIFIED (MM/DD/YY) 22:00:17 SQL> Rem pyam 11/21/16 - 25125745: back out 24711897 22:00:17 SQL> Rem pyam 11/10/16 - Backport pyam_bug-24711897 from main 22:00:17 SQL> Rem pyam 09/30/16 - 24711897: delete potential duplicate idl_* rows 22:00:17 SQL> Rem jaeblee 06/13/16 - 23239870: force compilation of standard 22:00:17 SQL> Rem pyam 12/22/15 - 21927236: update props$ checks to pdb_to_apppdb 22:00:17 SQL> Rem pyam 06/11/14 - LRG 11949012: fix invalidation clause for 22:00:17 SQL> Rem noncdb_to_pdb.sql 22:00:17 SQL> Rem pyam 05/22/14 - for ncdb-to-pdb conversion, invalidate not only 22:00:17 SQL> Rem plsql 22:00:17 SQL> Rem pyam 04/17/14 - 18063022: now called from noncdb_to_pdb.sql. 22:00:17 SQL> Rem Invalidate only common objs if unconverted 22:00:17 SQL> Rem non-CDB 22:00:17 SQL> Rem jerrede 11/08/12 - Document set serveroutput on deadlock issue 22:00:17 SQL> Rem Lrg 8473773 22:00:17 SQL> Rem gviswana 05/02/07 - Add warning messages; revert view Diana delete 22:00:17 SQL> Rem gviswana 06/10/06 - Delete Diana performance optimization 22:00:17 SQL> Rem gviswana 06/06/06 - Delete 11.x Diana for fine-grain deps 22:00:17 SQL> Rem ssubrama 12/30/05 - bug 4882839 invalidate dbms_standard dependents 22:00:17 SQL> Rem gviswana 06/17/05 - Delete sequence Diana 22:00:17 SQL> Rem weiwang 05/06/05 - invalidate rules engine objects 22:00:17 SQL> Rem ciyer 07/24/04 - selectively invalidate views and synonyms 22:00:17 SQL> Rem jmuller 02/12/04 - Fix bug 3432304: commit even if no rows deleted 22:00:17 SQL> Rem gviswana 08/28/03 - 3103287: Remove Diana deletions for PL/SQL 22:00:17 SQL> Rem jmallory 08/18/03 - Hardcode dbms_dbupgrade_subname 22:00:17 SQL> Rem gviswana 06/23/03 - 2985184: Invalidate dependent views 22:00:17 SQL> Rem kquinn 07/22/03 - 3009599: Handle remote dbms_standard case 22:00:17 SQL> Rem jmallory 06/09/03 - Fix null checking 22:00:17 SQL> Rem jmallory 03/31/03 - Exclude dbupgrade objects 22:00:17 SQL> Rem gviswana 04/16/03 - Move system parameter handling to utlirp.sql 22:00:17 SQL> Rem kmuthukk 02/03/03 - fix update performance 22:00:17 SQL> Rem nfolkert 12/23/02 - invalidate summary objects 22:00:17 SQL> Rem kmuthukk 10/22/02 - ncomp dlls in db 22:00:17 SQL> Rem gviswana 10/28/02 - Deferred synonym translation 22:00:17 SQL> Rem rdecker 11/09/01 - remove CREATE library code FOR bug 1952368 22:00:17 SQL> Rem gviswana 08/17/01 - Break up IDL_ deletes to avoid blowing rollback 22:00:17 SQL> Rem rburns 08/23/01 - bug 1950073 - add exit on error 22:00:17 SQL> Rem rburns 08/24/01 - add plitblm 22:00:17 SQL> Rem rburns 07/26/01 - invalidate index types and operators 22:00:17 SQL> Rem rxgovind 04/30/01 - interim fix for bug-1747462 22:00:17 SQL> Rem gviswana 10/19/00 - Disable system triggers for Standard recompile 22:00:17 SQL> Rem sbalaram 06/01/00 - Add prvthssq.sql after resolving Bug 1292760 22:00:17 SQL> Rem thoang 05/26/00 - Do not invalidate earlier type versions 22:00:17 SQL> Rem jdavison 04/11/00 - Modify usage notes for 8.2 changes. 22:00:17 SQL> Rem rshaikh 09/22/99 - quote library names 22:00:17 SQL> Rem mjungerm 06/15/99 - add java shared data object type 22:00:17 SQL> Rem rshaikh 02/12/99 - dont delete java idl objects 22:00:17 SQL> Rem rshaikh 11/17/98 - remove obsolete comments 22:00:17 SQL> Rem rshaikh 10/30/98 - add slash after last truncate stmt 22:00:17 SQL> Rem abrik 10/01/98 - just truncate idl_*$ tables 22:00:17 SQL> Rem rshaikh 10/14/98 - bug 491101: recreate libraries 22:00:17 SQL> Rem ncramesh 08/04/98 - change for sqlplus 22:00:17 SQL> Rem rshaikh 07/20/98 - add commits 22:00:17 SQL> Rem usundara 06/03/98 - merge from 8.0.5 22:00:17 SQL> Rem usundara 04/29/98 - creation (split from utlirp) 22:00:17 SQL> Rem Kannan Muthukkaruppan (kmuthukk) was the original 22:00:17 SQL> Rem author of this script. 22:00:17 SQL> 22:00:17 SQL> Rem =========================================================================== 22:00:17 SQL> Rem BEGIN utlip.sql 22:00:17 SQL> Rem =========================================================================== 22:00:17 SQL> 22:00:17 SQL> Rem Exit immediately if Any failure in this script 22:00:17 SQL> WHENEVER SQLERROR EXIT; 22:00:17 SQL> 22:00:17 SQL> -- If we are in the middle of converting a PDB, the initial objects we 22:00:17 SQL> -- invalidate should be limited to common objects 22:00:17 SQL> COLUMN andcommon NEW_VALUE andcommon 22:00:17 SQL> select decode(cnt, 0, '', 'and bitand(flags,196608)<>0') andcommon 22:00:17 2 from (select count(*) cnt from props$ 22:00:17 3 where name in ('NONCDB_TO_PDB.SQL', 'PDB_TO_APPPDB.SQL') 22:00:17 4 and value$='CONVERTING'); ANDCOMMON --------------------------- and bitand(flags,196608)<>0 1 row selected. Elapsed: 00:00:00.00 22:00:17 SQL> 22:00:17 SQL> -- if invalidate should be limited to Oracle-supplied objects 22:00:17 SQL> COLUMN andorclsupp NEW_VALUE andorclsupp 22:00:17 SQL> select decode(cnt, 0, '', 'and bitand(flags,4194304)<>0') andorclsupp 22:00:17 2 from (select count(*) cnt from props$ 22:00:17 3 where name='NONCDB_TO_PDB.SQL' and value$='CONVERTING'); ANDORCLSUPP ---------------------------- and bitand(flags,4194304)<>0 1 row selected. Elapsed: 00:00:00.00 22:00:17 SQL> 22:00:17 SQL> -- if invalidate should be limited to Application Container objects 22:00:17 SQL> COLUMN andapp NEW_VALUE andapp 22:00:17 SQL> select decode(cnt, 0, '', 'and bitand(flags,134217728)<>0') andapp 22:00:17 2 from (select count(*) cnt from props$ 22:00:17 3 where name='PDB_TO_APPPDB.SQL' and value$='CONVERTING'); ANDAPP ------------------------------ 1 row selected. Elapsed: 00:00:00.00 22:00:17 SQL> 22:00:17 SQL> -- specify types to invalidate. If we're converting, invalidate beyond plsql 22:00:17 SQL> COLUMN typestoinv NEW_VALUE typestoinv 22:00:17 SQL> select decode(cnt, 0, 22:00:17 2 '((type# in (7, 8, 9, 11, 12, 14, 22, 32, 33, 87)) or (type# = 13 and subname is null))', 22:00:17 3 '((type# in (4,5,6,7,8,9,11,12,14,22,23,32,33)) or (type# = 13 and subname is null))') 22:00:17 4 typestoinv 22:00:17 5 from (select count(*) cnt from props$ 22:00:17 6 where name in ('NONCDB_TO_PDB.SQL', 'PDB_TO_APPPDB.SQL') 22:00:17 7 and value$='CONVERTING'); TYPESTOINV -------------------------------------------------------------------------------- ((type# in (4,5,6,7,8,9,11,12,14,22,23,32,33)) or (type# = 13 and subname is nul l)) 1 row selected. Elapsed: 00:00:00.01 22:00:17 SQL> 22:00:17 SQL> -- call standard and dbmsstdx if this is not for app container conversion 22:00:17 SQL> COLUMN standard NEW_VALUE standard 22:00:17 SQL> select decode(cnt, 0, 'standard', 'nothing') standard 22:00:17 2 from (select count(*) cnt from props$ 22:00:17 3 where name='PDB_TO_APPPDB.SQL' and value$='CONVERTING'); STANDARD -------- standard 1 row selected. Elapsed: 00:00:00.00 22:00:17 SQL> 22:00:17 SQL> COLUMN dbmsstdx NEW_VALUE dbmsstdx 22:00:17 SQL> select decode(cnt, 0, 'dbmsstdx', 'nothing') dbmsstdx 22:00:17 2 from (select count(*) cnt from props$ 22:00:17 3 where name='PDB_TO_APPPDB.SQL' and value$='CONVERTING'); DBMSSTDX -------- dbmsstdx 1 row selected. Elapsed: 00:00:00.01 22:00:17 SQL> 22:00:17 SQL> -- Step (I) 22:00:17 SQL> -- 22:00:17 SQL> -- First we invalidate all stored PL/SQL units (procs, fns, pkgs, 22:00:17 SQL> -- types, triggers.) 22:00:17 SQL> -- 22:00:17 SQL> -- The type# in the update statement below indicates the KGL 22:00:17 SQL> -- type of the object. They have the following interpretation: 22:00:17 SQL> -- 7 - pl/sql stored procedure 22:00:17 SQL> -- 8 - pl/sql stored function 22:00:17 SQL> -- 9 - pl/sql pkg spec 22:00:17 SQL> -- 11 - pl/sql pkg body 22:00:17 SQL> -- 12 - trigger 22:00:17 SQL> -- 13 - type spec 22:00:17 SQL> -- 14 - type body 22:00:17 SQL> -- 22 - library 22:00:17 SQL> -- 32 - indextype 22:00:17 SQL> -- 33 - operator 22:00:17 SQL> -- 22:00:17 SQL> -- Earlier type versions do not need to be invalidated since all pgm 22:00:17 SQL> -- units reference latest type versions. There is no mechanisms to 22:00:17 SQL> -- recompile earlier type versions anyway. They must be kept valid so 22:00:17 SQL> -- we can get access to its TDO to handle image conversion from one type 22:00:17 SQL> -- version to another. 22:00:17 SQL> -- All earlier type versions has the version name stored in obj$.subname 22:00:17 SQL> -- and the latest type version always has a null subname. We use this 22:00:17 SQL> -- fact to invalidate only the latest type version. 22:00:17 SQL> update obj$ set status = 6 22:00:17 2 where &typestoinv 22:00:17 3 and ((subname is null) or (subname <> 'DBMS_DBUPGRADE_BABY')) 22:00:17 4 and status not in (5,6) 22:00:17 5 and linkname is null 22:00:17 6 and not exists (select 1 22:00:17 7 from type$ 22:00:17 8 where (bitand(properties, 16) = 16) 22:00:17 9 and toid = obj$.oid$) &andorclsupp &andapp 22:00:17 10 / 12552 rows updated. Elapsed: 00:00:00.70 22:00:17 SQL> commit 22:00:17 2 / Commit complete. Elapsed: 00:00:00.45 22:00:18 SQL> 22:00:18 SQL> Rem Always invalidate MVs during upgrades/ downgrades 22:00:18 SQL> update obj$ set status = 5 where type# = 42; 0 rows updated. Elapsed: 00:00:00.01 22:00:18 SQL> commit; Commit complete. Elapsed: 00:00:00.00 22:00:18 SQL> 22:00:18 SQL> UPDATE sys.obj$ SET status = 5 22:00:18 2 where obj# in 22:00:18 3 ((select obj# from obj$ where type# = 62 or type# = 46 or type# = 59) 22:00:18 4 union all 22:00:18 5 (select /*+ index (dependency$ i_dependency2) */ 22:00:18 6 d_obj# from dependency$ 22:00:18 7 connect by prior d_obj# = p_obj# 22:00:18 8 start with p_obj# in 22:00:18 9 (select obj# from obj$ where type# = 62 or type# = 46 or type# = 59))) 22:00:18 10 &andcommon 22:00:18 11 / 0 rows updated. Elapsed: 00:00:00.14 22:00:18 SQL> commit 22:00:18 2 / Commit complete. Elapsed: 00:00:00.00 22:00:18 SQL> 22:00:18 SQL> -- Invalidate all synonym dependents of dbms_standard. If not we will end up 22:00:18 SQL> -- with a timestamp mismatch between dependency and obj 22:00:18 SQL> 22:00:18 SQL> update obj$ set status=6 where obj# in 22:00:18 2 (select d_obj# from dependency$ 22:00:18 3 where p_obj# in (select obj# from obj$ where name='DBMS_STANDARD' and 22:00:18 4 type# in ( 9, 11) and owner#=0) 22:00:18 5 ) and type#=5 22:00:18 6 / 1 row updated. Elapsed: 00:00:00.34 22:00:18 SQL> commit 22:00:18 2 / Commit complete. Elapsed: 00:00:00.00 22:00:18 SQL> 22:00:18 SQL> alter system flush shared_pool 22:00:18 2 / System altered. Elapsed: 00:00:00.02 22:00:18 SQL> 22:00:18 SQL> -- 22:00:18 SQL> -- Step (II) 22:00:18 SQL> -- 22:00:18 SQL> -- Delete Diana to force full recompile (rather than fast validation). 22:00:18 SQL> -- Diana deletion is accomplished by changing the version number to make 22:00:18 SQL> -- rows invisible. 22:00:18 SQL> -- 22:00:18 SQL> update idl_ub1$ set version = -version 22:00:18 2 where part = 0 and version >= 184549376 22:00:18 3 and obj# IN 22:00:18 4 (select obj# from obj$ o where status in (5, 6) and 22:00:18 5 type# in (7, 8, 9, 11, 12, 13, 14, 22, 32, 33, 87)); 5942 rows updated. Elapsed: 00:00:04.13 22:00:22 SQL> update idl_ub2$ SET version = -version 22:00:22 2 where part = 0 and version >= 184549376 22:00:22 3 and obj# IN 22:00:22 4 (select obj# from obj$ o where status in (5, 6) and 22:00:22 5 type# in (7, 8, 9, 11, 12, 13, 14, 22, 32, 33, 87)); 12680 rows updated. Elapsed: 00:00:05.14 22:00:28 SQL> update idl_sb4$ SET version = -version 22:00:28 2 where part = 0 and version >= 184549376 22:00:28 3 and obj# IN 22:00:28 4 (select obj# from obj$ o where status in (5, 6) and 22:00:28 5 type# in (7, 8, 9, 11, 12, 13, 14, 22, 32, 33, 87)); 11896 rows updated. Elapsed: 00:00:00.77 22:00:28 SQL> update idl_char$ SET version = -version 22:00:28 2 where part = 0 and version >= 184549376 22:00:28 3 and obj# IN 22:00:28 4 (select obj# from obj$ o where status in (5, 6) and 22:00:28 5 type# in (7, 8, 9, 11, 12, 13, 14, 22, 32, 33, 87)); 6043 rows updated. Elapsed: 00:00:00.78 22:00:29 SQL> 22:00:29 SQL> commit; Commit complete. Elapsed: 00:00:00.01 22:00:29 SQL> alter system flush shared_pool; System altered. Elapsed: 00:00:00.03 22:00:29 SQL> 22:00:29 SQL> -- Step (II) 22:00:29 SQL> -- 22:00:29 SQL> -- Recreate package standard and dbms_standard. This is needed to execute 22:00:29 SQL> -- subsequent anonymous blocks 22:00:29 SQL> alter session set "_force_standard_compile"=TRUE; Session altered. Elapsed: 00:00:00.01 22:00:29 SQL> @@&standard 22:00:29 SQL> @@?/rdbms/admin/sqlsessstart.sql 22:00:29 SQL> Rem 22:00:29 SQL> Rem $Header: rdbms/admin/sqlsessstart.sql /main/1 2013/03/13 13:08:33 surman Exp $ 22:00:29 SQL> Rem 22:00:29 SQL> Rem sqlsessstart.sql 22:00:29 SQL> Rem 22:00:29 SQL> Rem Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. 22:00:29 SQL> Rem 22:00:29 SQL> Rem NAME 22:00:29 SQL> Rem sqlsessstart.sql - SQL session start 22:00:29 SQL> Rem 22:00:29 SQL> Rem DESCRIPTION 22:00:29 SQL> Rem Any commands which should be run at the start of all oracle 22:00:29 SQL> Rem supplied scripts. 22:00:29 SQL> Rem 22:00:29 SQL> Rem NOTES 22:00:29 SQL> Rem See sqlsessend.sql for the corresponding end script. 22:00:29 SQL> Rem 22:00:29 SQL> Rem MODIFIED (MM/DD/YY) 22:00:29 SQL> Rem surman 03/08/13 - 16462837: Common start and end scripts 22:00:29 SQL> Rem surman 03/08/13 - Created 22:00:29 SQL> Rem 22:00:29 SQL> 22:00:29 SQL> alter session set "_ORACLE_SCRIPT" = true; Session altered. Elapsed: 00:00:00.00 22:00:29 SQL> @@stdspec.sql 22:00:29 SQL> @@?/rdbms/admin/sqlsessstart.sql 22:00:29 SQL> Rem 22:00:29 SQL> Rem $Header: rdbms/admin/sqlsessstart.sql /main/1 2013/03/13 13:08:33 surman Exp $ 22:00:29 SQL> Rem 22:00:29 SQL> Rem sqlsessstart.sql 22:00:29 SQL> Rem 22:00:29 SQL> Rem Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. 22:00:29 SQL> Rem 22:00:29 SQL> Rem NAME 22:00:29 SQL> Rem sqlsessstart.sql - SQL session start 22:00:29 SQL> Rem 22:00:29 SQL> Rem DESCRIPTION 22:00:29 SQL> Rem Any commands which should be run at the start of all oracle 22:00:29 SQL> Rem supplied scripts. 22:00:29 SQL> Rem 22:00:29 SQL> Rem NOTES 22:00:29 SQL> Rem See sqlsessend.sql for the corresponding end script. 22:00:29 SQL> Rem 22:00:29 SQL> Rem MODIFIED (MM/DD/YY) 22:00:29 SQL> Rem surman 03/08/13 - 16462837: Common start and end scripts 22:00:29 SQL> Rem surman 03/08/13 - Created 22:00:29 SQL> Rem 22:00:29 SQL> 22:00:29 SQL> alter session set "_ORACLE_SCRIPT" = true; Session altered. Elapsed: 00:00:00.01 22:00:29 SQL> create or replace 22:00:29 2 package STANDARD AUTHID CURRENT_USER is -- careful on this line; SED edit occurs! 22:00:29 3 22:00:29 4 /********** Types and subtypes, do not reorder **********/ 22:00:29 5 type BOOLEAN is (FALSE, TRUE); 22:00:29 6 22:00:29 7 type DATE is DATE_BASE; 22:00:29 8 22:00:29 9 type NUMBER is NUMBER_BASE; 22:00:29 10 subtype FLOAT is NUMBER; -- NUMBER(126) 22:00:29 11 subtype REAL is FLOAT; -- FLOAT(63) 22:00:29 12 subtype "DOUBLE PRECISION" is FLOAT; 22:00:29 13 subtype INTEGER is NUMBER(38,0); 22:00:29 14 subtype INT is INTEGER; 22:00:29 15 subtype SMALLINT is NUMBER(38,0); 22:00:29 16 subtype DECIMAL is NUMBER(38,0); 22:00:29 17 subtype NUMERIC is DECIMAL; 22:00:29 18 subtype DEC is DECIMAL; 22:00:29 19 22:00:29 20 22:00:29 21 subtype BINARY_INTEGER is INTEGER range '-2147483647'..2147483647; 22:00:29 22 subtype NATURAL is BINARY_INTEGER range 0..2147483647; 22:00:29 23 subtype NATURALN is NATURAL not null; 22:00:29 24 subtype POSITIVE is BINARY_INTEGER range 1..2147483647; 22:00:29 25 subtype POSITIVEN is POSITIVE not null; 22:00:29 26 subtype SIGNTYPE is BINARY_INTEGER range '-1'..1; -- for SIGN functions 22:00:29 27 22:00:29 28 type VARCHAR2 is NEW CHAR_BASE; 22:00:29 29 22:00:29 30 subtype VARCHAR is VARCHAR2; 22:00:29 31 subtype STRING is VARCHAR2; 22:00:29 32 22:00:29 33 subtype LONG is VARCHAR2(32760); 22:00:29 34 22:00:29 35 subtype RAW is VARCHAR2; 22:00:29 36 subtype "LONG RAW" is RAW(32760); 22:00:29 37 22:00:29 38 subtype ROWID is VARCHAR2(256); 22:00:29 39 22:00:29 40 -- Ansi fixed-length char 22:00:29 41 -- Define synonyms for CHAR and CHARN. 22:00:29 42 subtype CHAR is VARCHAR2; 22:00:29 43 subtype CHARACTER is CHAR; 22:00:29 44 22:00:29 45 type MLSLABEL is new CHAR_BASE; 22:00:29 46 22:00:29 47 -- Large object data types. 22:00:29 48 -- binary, character, binary file. 22:00:29 49 type BLOB is BLOB_BASE; 22:00:29 50 type CLOB is CLOB_BASE; 22:00:29 51 type BFILE is BFILE_BASE; 22:00:29 52 22:00:29 53 -- Verbose and NCHAR type names 22:00:29 54 subtype "CHARACTER VARYING" is VARCHAR; 22:00:29 55 subtype "CHAR VARYING" is VARCHAR; 22:00:29 56 subtype "NATIONAL CHARACTER" is CHAR CHARACTER SET NCHAR_CS; 22:00:29 57 subtype "NATIONAL CHAR" is CHAR CHARACTER SET NCHAR_CS; 22:00:29 58 subtype "NCHAR" is CHAR CHARACTER SET NCHAR_CS; 22:00:29 59 subtype "NATIONAL CHARACTER VARYING" is VARCHAR CHARACTER SET NCHAR_CS; 22:00:29 60 subtype "NATIONAL CHAR VARYING" is VARCHAR CHARACTER SET NCHAR_CS; 22:00:29 61 subtype "NCHAR VARYING" is VARCHAR CHARACTER SET NCHAR_CS; 22:00:29 62 subtype "NVARCHAR2" is VARCHAR2 CHARACTER SET NCHAR_CS; 22:00:29 63 subtype "CHARACTER LARGE OBJECT" is CLOB; 22:00:29 64 subtype "CHAR LARGE OBJECT" is CLOB; 22:00:29 65 subtype "NATIONAL CHARACTER LARGE OBJEC" is CLOB CHARACTER SET NCHAR_CS; 22:00:29 66 subtype "NCHAR LARGE OBJECT" is CLOB CHARACTER SET NCHAR_CS; 22:00:29 67 subtype "NCLOB" is CLOB CHARACTER SET NCHAR_CS; 22:00:29 68 subtype "BINARY LARGE OBJECT" is BLOB; 22:00:29 69 22:00:29 70 subtype pls_integer is binary_integer; 22:00:29 71 22:00:29 72 type TIME is new DATE_BASE; 22:00:29 73 type TIMESTAMP is new DATE_BASE; 22:00:29 74 type "TIME WITH TIME ZONE" is new DATE_BASE; 22:00:29 75 type "TIMESTAMP WITH TIME ZONE" is new DATE_BASE; 22:00:29 76 type "INTERVAL YEAR TO MONTH" is new DATE_BASE; 22:00:29 77 type "INTERVAL DAY TO SECOND" is new DATE_BASE; 22:00:29 78 22:00:29 79 SUBTYPE TIME_UNCONSTRAINED IS TIME(9); 22:00:29 80 SUBTYPE TIME_TZ_UNCONSTRAINED IS TIME(9) WITH TIME ZONE; 22:00:29 81 SUBTYPE TIMESTAMP_UNCONSTRAINED IS TIMESTAMP(9); 22:00:29 82 SUBTYPE TIMESTAMP_TZ_UNCONSTRAINED IS TIMESTAMP(9) WITH TIME ZONE; 22:00:29 83 SUBTYPE YMINTERVAL_UNCONSTRAINED IS INTERVAL YEAR(9) TO MONTH; 22:00:29 84 SUBTYPE DSINTERVAL_UNCONSTRAINED IS INTERVAL DAY(9) TO SECOND (9); 22:00:29 85 22:00:29 86 TYPE UROWID IS NEW CHAR_BASE; 22:00:29 87 22:00:29 88 type "TIMESTAMP WITH LOCAL TIME ZONE" is new DATE_BASE; 22:00:29 89 subtype timestamp_ltz_unconstrained is timestamp(9) with local time zone; 22:00:29 90 22:00:29 91 subtype BINARY_FLOAT is NUMBER; 22:00:29 92 subtype BINARY_DOUBLE is NUMBER; 22:00:29 93 22:00:29 94 -- The following data types are generics, used specially within package 22:00:29 95 -- STANDARD and some other Oracle packages. They are protected against 22:00:29 96 -- other use; sorry. True generic types are not yet part of the language. 22:00:29 97 22:00:29 98 type "" as object (dummy char(1)); 22:00:29 99 type "" is record (dummy char(1)); 22:00:29 100 type "" as object (dummy char(1)); 22:00:29 101 type "" is varray (1) of char(1); 22:00:29 102 type "" is table of char(1) index by binary_integer; 22:00:29 103 type "" is table of char(1); 22:00:29 104 type "" is table of char(1); 22:00:29 105 type "" is ref cursor; 22:00:29 106 22:00:29 107 -- This will actually match against a Q_TABLE 22:00:29 108 type "" is table of ""; 22:00:29 109 subtype "" is ""; 22:00:29 110 22:00:29 111 -- The following generic index table data types are used by the PL/SQL 22:00:29 112 -- compiler to materialize an array attribute at the runtime (for more 22:00:29 113 -- details about the array attributes, please see Bulk Binds document). 22:00:29 114 type " SYS$INT_V2TABLE" is table of integer index by binary_integer; 22:00:29 115 22:00:29 116 -- The following record type and the corresponding generic index table 22:00:29 117 -- data types are used by the PL/SQL compiler to materialize a table 22:00:29 118 -- at the runtime in order to record the exceptions raised during the 22:00:29 119 -- execution of FORALL bulk bind statement (for more details, please 22:00:29 120 -- see bulk binds extensions document in 8.2). 22:00:29 121 type " SYS$BULK_ERROR_RECORD" is 22:00:29 122 record (error_index pls_integer, error_code pls_integer); 22:00:29 123 type " SYS$REC_V2TABLE" is table of " SYS$BULK_ERROR_RECORD" 22:00:29 124 index by binary_integer; 22:00:29 125 22:00:29 126 /* Adding a generic weak ref cursor type */ 22:00:29 127 type sys_refcursor is ref cursor; 22:00:29 128 22:00:29 129 /* the following data type is a generic for all opaque types */ 22:00:29 130 type "" as opaque FIXED(1) USING LIBRARY dummy_lib 22:00:29 131 (static function dummy return number); 22:00:29 132 22:00:29 133 type "" is table of char(1) index by varchar2(1); 22:00:29 134 22:00:29 135 /********** Add new types or subtypes here **********/ 22:00:29 136 22:00:29 137 -- Simple scalar types 22:00:29 138 22:00:29 139 subtype SIMPLE_INTEGER is BINARY_INTEGER NOT NULL; 22:00:29 140 subtype SIMPLE_FLOAT is BINARY_FLOAT NOT NULL; 22:00:29 141 subtype SIMPLE_DOUBLE is BINARY_DOUBLE NOT NULL; 22:00:29 142 22:00:29 143 /********** Predefined constants **********/ 22:00:29 144 22:00:29 145 BINARY_FLOAT_NAN constant BINARY_FLOAT; 22:00:29 146 BINARY_FLOAT_INFINITY constant BINARY_FLOAT; 22:00:29 147 BINARY_FLOAT_MAX_NORMAL constant BINARY_FLOAT; 22:00:29 148 BINARY_FLOAT_MIN_NORMAL constant BINARY_FLOAT; 22:00:29 149 BINARY_FLOAT_MAX_SUBNORMAL constant BINARY_FLOAT; 22:00:29 150 BINARY_FLOAT_MIN_SUBNORMAL constant BINARY_FLOAT; 22:00:29 151 BINARY_DOUBLE_NAN constant BINARY_DOUBLE; 22:00:29 152 BINARY_DOUBLE_INFINITY constant BINARY_DOUBLE; 22:00:29 153 BINARY_DOUBLE_MAX_NORMAL constant BINARY_DOUBLE; 22:00:29 154 BINARY_DOUBLE_MIN_NORMAL constant BINARY_DOUBLE; 22:00:29 155 BINARY_DOUBLE_MAX_SUBNORMAL constant BINARY_DOUBLE; 22:00:29 156 BINARY_DOUBLE_MIN_SUBNORMAL constant BINARY_DOUBLE; 22:00:29 157 22:00:29 158 /********** Add new constants here **********/ 22:00:29 159 22:00:29 160 /********** Predefined exceptions **********/ 22:00:29 161 22:00:29 162 CURSOR_ALREADY_OPEN exception; 22:00:29 163 pragma EXCEPTION_INIT(CURSOR_ALREADY_OPEN, '-6511'); 22:00:29 164 22:00:29 165 DUP_VAL_ON_INDEX exception; 22:00:29 166 pragma EXCEPTION_INIT(DUP_VAL_ON_INDEX, '-0001'); 22:00:29 167 22:00:29 168 TIMEOUT_ON_RESOURCE exception; 22:00:29 169 pragma EXCEPTION_INIT(TIMEOUT_ON_RESOURCE, '-0051'); 22:00:29 170 22:00:29 171 INVALID_CURSOR exception; 22:00:29 172 pragma EXCEPTION_INIT(INVALID_CURSOR, '-1001'); 22:00:29 173 22:00:29 174 NOT_LOGGED_ON exception; 22:00:29 175 pragma EXCEPTION_INIT(NOT_LOGGED_ON, '-1012'); 22:00:29 176 22:00:29 177 LOGIN_DENIED exception; 22:00:29 178 pragma EXCEPTION_INIT(LOGIN_DENIED, '-1017'); 22:00:29 179 22:00:29 180 NO_DATA_FOUND exception; 22:00:29 181 pragma EXCEPTION_INIT(NO_DATA_FOUND, 100); 22:00:29 182 22:00:29 183 ZERO_DIVIDE exception; 22:00:29 184 pragma EXCEPTION_INIT(ZERO_DIVIDE, '-1476'); 22:00:29 185 22:00:29 186 INVALID_NUMBER exception; 22:00:29 187 pragma EXCEPTION_INIT(INVALID_NUMBER, '-1722'); 22:00:29 188 22:00:29 189 TOO_MANY_ROWS exception; 22:00:29 190 pragma EXCEPTION_INIT(TOO_MANY_ROWS, '-1422'); 22:00:29 191 22:00:29 192 STORAGE_ERROR exception; 22:00:29 193 pragma EXCEPTION_INIT(STORAGE_ERROR, '-6500'); 22:00:29 194 22:00:29 195 PROGRAM_ERROR exception; 22:00:29 196 pragma EXCEPTION_INIT(PROGRAM_ERROR, '-6501'); 22:00:29 197 22:00:29 198 VALUE_ERROR exception; 22:00:29 199 pragma EXCEPTION_INIT(VALUE_ERROR, '-6502'); 22:00:29 200 22:00:29 201 ACCESS_INTO_NULL exception; 22:00:29 202 pragma EXCEPTION_INIT(ACCESS_INTO_NULL, '-6530'); 22:00:29 203 22:00:29 204 COLLECTION_IS_NULL exception; 22:00:29 205 pragma EXCEPTION_INIT(COLLECTION_IS_NULL , '-6531'); 22:00:29 206 22:00:29 207 SUBSCRIPT_OUTSIDE_LIMIT exception; 22:00:29 208 pragma EXCEPTION_INIT(SUBSCRIPT_OUTSIDE_LIMIT,'-6532'); 22:00:29 209 22:00:29 210 SUBSCRIPT_BEYOND_COUNT exception; 22:00:29 211 pragma EXCEPTION_INIT(SUBSCRIPT_BEYOND_COUNT ,'-6533'); 22:00:29 212 22:00:29 213 -- exception for ref cursors 22:00:29 214 ROWTYPE_MISMATCH exception; 22:00:29 215 pragma EXCEPTION_INIT(ROWTYPE_MISMATCH, '-6504'); 22:00:29 216 22:00:29 217 SYS_INVALID_ROWID EXCEPTION; 22:00:29 218 PRAGMA EXCEPTION_INIT(SYS_INVALID_ROWID, '-1410'); 22:00:29 219 22:00:29 220 -- The object instance i.e. SELF is null 22:00:29 221 SELF_IS_NULL exception; 22:00:29 222 pragma EXCEPTION_INIT(SELF_IS_NULL, '-30625'); 22:00:29 223 22:00:29 224 CASE_NOT_FOUND exception; 22:00:29 225 pragma EXCEPTION_INIT(CASE_NOT_FOUND, '-6592'); 22:00:29 226 22:00:29 227 -- Added for USERENV enhancement, bug 1622213. 22:00:29 228 USERENV_COMMITSCN_ERROR exception; 22:00:29 229 pragma EXCEPTION_INIT(USERENV_COMMITSCN_ERROR, '-1725'); 22:00:29 230 22:00:29 231 -- Parallel and pipelined support 22:00:29 232 NO_DATA_NEEDED exception; 22:00:29 233 pragma EXCEPTION_INIT(NO_DATA_NEEDED, '-6548'); 22:00:29 234 -- End of 8.2 parallel and pipelined support 22:00:29 235 22:00:29 236 /********** Add new exceptions here **********/ 22:00:29 237 22:00:29 238 /********** Function, operators and procedures **********/ 22:00:29 239 22:00:29 240 function "EXISTS" return BOOLEAN; 22:00:29 241 pragma BUILTIN('EXISTS',10,240,240); -- This is special cased in PH2 -- Pj 22:00:29 242 22:00:29 243 function GREATEST (pattern NUMBER) return NUMBER; 22:00:29 244 pragma BUILTIN('GREATEST',12,240,240);-- This is special cased in PH2 -- Pj 22:00:29 245 function GREATEST (pattern VARCHAR2 CHARACTER SET ANY_CS) 22:00:29 246 return VARCHAR2 CHARACTER SET pattern%CHARSET; 22:00:29 247 pragma BUILTIN('GREATEST',12,240,240);-- This is special cased in PH2 -- Pj 22:00:29 248 function GREATEST (pattern DATE) return DATE; 22:00:29 249 pragma BUILTIN('GREATEST',12,240,240);-- This is special cased in PH2 -- Pj 22:00:29 250 22:00:29 251 function LEAST (pattern NUMBER) return NUMBER; 22:00:29 252 pragma BUILTIN('LEAST',13,240,240);-- This is special cased in PH2 -- Pj 22:00:29 253 function LEAST (pattern VARCHAR2 CHARACTER SET ANY_CS) 22:00:29 254 return VARCHAR2 CHARACTER SET pattern%CHARSET; 22:00:29 255 pragma BUILTIN('LEAST',13,240,240);-- This is special cased in PH2 -- Pj 22:00:29 256 function LEAST (pattern DATE) return DATE; 22:00:29 257 pragma BUILTIN('LEAST',13,240,240);-- This is special cased in PH2 -- Pj 22:00:29 258 22:00:29 259 function DECODE (expr NUMBER, pat NUMBER, res NUMBER) return NUMBER; 22:00:29 260 pragma BUILTIN('DECODE',22,240,240);-- This is special cased in PH2 -- Pj 22:00:29 261 function DECODE (expr NUMBER, 22:00:29 262 pat NUMBER, 22:00:29 263 res VARCHAR2 CHARACTER SET ANY_CS) 22:00:29 264 return VARCHAR2 CHARACTER SET res%CHARSET; 22:00:29 265 pragma BUILTIN('DECODE',22,240,240);-- This is special cased in PH2 -- Pj 22:00:29 266 function DECODE (expr NUMBER, pat NUMBER, res DATE) return DATE; 22:00:29 267 pragma BUILTIN('DECODE',22,240,240);-- This is special cased in PH2 -- Pj 22:00:29 268 22:00:29 269 function DECODE (expr VARCHAR2 CHARACTER SET ANY_CS, 22:00:29 270 pat VARCHAR2 CHARACTER SET expr%CHARSET, 22:00:29 271 res NUMBER) return NUMBER; 22:00:29 272 pragma BUILTIN('DECODE',22,240,240);-- This is special cased in PH2 -- Pj 22:00:29 273 function DECODE (expr VARCHAR2 CHARACTER SET ANY_CS, 22:00:29 274 pat VARCHAR2 CHARACTER SET expr%CHARSET, 22:00:29 275 res VARCHAR2 CHARACTER SET ANY_CS) 22:00:29 276 return VARCHAR2 CHARACTER SET res%CHARSET; 22:00:29 277 pragma BUILTIN('DECODE',22,240,240);-- This is special cased in PH2 -- Pj 22:00:29 278 function DECODE (expr VARCHAR2 CHARACTER SET ANY_CS, 22:00:29 279 pat VARCHAR2 CHARACTER SET expr%CHARSET, 22:00:29 280 res DATE) return DATE; 22:00:29 281 pragma BUILTIN('DECODE',22,240,240);-- This is special cased in PH2 -- Pj 22:00:29 282 22:00:29 283 function DECODE (expr DATE, pat DATE, res NUMBER) return NUMBER; 22:00:29 284 pragma BUILTIN('DECODE',22,240,240);-- This is special cased in PH2 -- Pj 22:00:29 285 function DECODE (expr DATE, 22:00:29 286 pat DATE, 22:00:29 287 res VARCHAR2 CHARACTER SET ANY_CS) 22:00:29 288 return VARCHAR2 CHARACTER SET res%CHARSET; 22:00:29 289 pragma BUILTIN('DECODE',22,240,240);-- This is special cased in PH2 -- Pj 22:00:29 290 function DECODE (expr DATE, pat DATE, res DATE) return DATE; 22:00:29 291 pragma BUILTIN('DECODE',22,240,240);-- This is special cased in PH2 -- Pj 22:00:29 292 22:00:29 293 function SQLCODE return PLS_INTEGER; 22:00:29 294 pragma BUILTIN('SQLCODE',45, 10, 0); -- PEMS_DB, DB_SQLCODE 22:00:29 295 22:00:29 296 function SQLERRM return varchar2; 22:00:29 297 pragma FIPSFLAG('SQLERRM', 1452); 22:00:29 298 22:00:29 299 function SQLERRM (code PLS_INTEGER) return varchar2; 22:00:29 300 pragma BUILTIN('SQLERRM',46, 10, 1); -- PEMS_DB, DB_SQLERRM 22:00:29 301 pragma FIPSFLAG('SQLERRM', 1452); 22:00:29 302 22:00:29 303 function LEVEL return NUMBER; 22:00:29 304 22:00:29 305 function ROWNUM return NUMBER; 22:00:29 306 22:00:29 307 function '=' (LEFT BOOLEAN, RIGHT BOOLEAN) return BOOLEAN; 22:00:29 308 pragma BUILTIN('=',2, 3, 1); -- PEMS_INTEGER, PEMDCMEQ 22:00:29 309 pragma FIPSFLAG('=', 1450); 22:00:29 310 function '!=' (LEFT BOOLEAN, RIGHT BOOLEAN) return BOOLEAN; -- also <> and ~= 22:00:29 311 pragma BUILTIN('!=',5, 3, 2); -- PEMS_INTEGER, PEMDCMNE 22:00:29 312 pragma FIPSFLAG('!=', 1450); 22:00:29 313 function '<' (LEFT BOOLEAN, RIGHT BOOLEAN) return BOOLEAN; 22:00:29 314 pragma BUILTIN('<',4, 3, 3); -- PEMS_INTEGER, PEMDCMLT 22:00:29 315 pragma FIPSFLAG('<', 1450); 22:00:29 316 function '<=' (LEFT BOOLEAN, RIGHT BOOLEAN) return BOOLEAN; 22:00:29 317 pragma BUILTIN('<=',6, 3, 4); -- PEMS_INTEGER, PEMDCMLE 22:00:29 318 pragma FIPSFLAG('<=', 1450); 22:00:29 319 function '>' (LEFT BOOLEAN, RIGHT BOOLEAN) return BOOLEAN; 22:00:29 320 pragma BUILTIN('>',1, 3, 5); -- PEMS_INTEGER, PEMDCMGT 22:00:29 321 pragma FIPSFLAG('>', 1450); 22:00:29 322 function '>=' (LEFT BOOLEAN, RIGHT BOOLEAN) return BOOLEAN; 22:00:29 323 pragma BUILTIN('>=',3, 3, 6); -- PEMS_INTEGER, PEMDMGE 22:00:29 324 pragma FIPSFLAG('>=', 1450); 22:00:29 325 22:00:29 326 -- Since SQL permits short-circuit evaluation, the 'and' and 'or' 22:00:29 327 -- operations will always be interpreted as 'and then' and 'or else' 22:00:29 328 -- when they occur in conditional statements. 22:00:29 329 22:00:29 330 function XOR (LEFT BOOLEAN, RIGHT BOOLEAN) return BOOLEAN; 22:00:29 331 pragma BUILTIN('XOR',8, 3, 9); -- PEMS_INTEGER, INT_XOR 22:00:29 332 pragma FIPSFLAG('XOR', 1450); 22:00:29 333 22:00:29 334 function 'NOT' (RIGHT BOOLEAN) return BOOLEAN; 22:00:29 335 pragma BUILTIN('NOT',9, 3, 10); -- PEMS_INTEGER, INT_NOT 22:00:29 336 22:00:29 337 function 'IS NULL' (B BOOLEAN) return BOOLEAN; 22:00:29 338 pragma BUILTIN('IS NULL', 0, 3, 0); -- PEMS_INTEGER, PEMDNUL 22:00:29 339 pragma FIPSFLAG('IS NULL', 1450); 22:00:29 340 22:00:29 341 function 'IS NOT NULL' (B BOOLEAN) return BOOLEAN; 22:00:29 342 pragma BUILTIN('IS NOT NULL', 0, 3, 50); -- PEMS_INTEGER, PEMDNUL 22:00:29 343 pragma FIPSFLAG('IS NOT NULL', 1450); 22:00:29 344 22:00:29 345 function NVL (B1 BOOLEAN, B2 BOOLEAN) return BOOLEAN; 22:00:29 346 pragma FIPSFLAG('NVL', 1450); 22:00:29 347 22:00:29 348 function '=' (LEFT VARCHAR2 CHARACTER SET ANY_CS, 22:00:29 349 RIGHT VARCHAR2 CHARACTER SET ANY_CS) return BOOLEAN; 22:00:29 350 pragma BUILTIN('=',2, 1, 14); -- PEMS_CHAR, PEMDCMEQ (VARCHAR2 SEMANTICS) 22:00:29 351 pragma FIPSFLAG('=', 1454); 22:00:29 352 function '!=' (LEFT VARCHAR2 CHARACTER SET ANY_CS, 22:00:29 353 RIGHT VARCHAR2 CHARACTER SET ANY_CS) return BOOLEAN; 22:00:29 354 pragma BUILTIN('!=',5, 1, 15); -- PEMS_CHAR, PEMDCMNE (VARCHAR2 SEMANTICS) 22:00:29 355 pragma FIPSFLAG('!=', 1454); 22:00:29 356 function '<' (LEFT VARCHAR2 CHARACTER SET ANY_CS, 22:00:29 357 RIGHT VARCHAR2 CHARACTER SET ANY_CS) return BOOLEAN; 22:00:29 358 pragma BUILTIN('<',4, 1, 16); -- PEMS_CHAR, PEMDCMLT (VARCHAR2 SEMANTICS) 22:00:29 359 pragma FIPSFLAG('<', 1454); 22:00:29 360 function '<=' (LEFT VARCHAR2 CHARACTER SET ANY_CS, 22:00:29 361 RIGHT VARCHAR2 CHARACTER SET ANY_CS) return BOOLEAN; 22:00:29 362 pragma BUILTIN('<=',6, 1, 17); -- PEMS_CHAR, PEMDCMLE (VARCHAR2 SEMANTICS) 22:00:29 363 pragma FIPSFLAG('<=', 1454); 22:00:29 364 function '>' (LEFT VARCHAR2 CHARACTER SET ANY_CS, 22:00:29 365 RIGHT VARCHAR2 CHARACTER SET ANY_CS) return BOOLEAN; 22:00:29 366 pragma BUILTIN('>',1, 1, 18); -- PEMS_CHAR, PEMDCMGT (VARCHAR2 SEMANTICS) 22:00:29 367 pragma FIPSFLAG('>', 1454); 22:00:29 368 function '>=' (LEFT VARCHAR2 CHARACTER SET ANY_CS, 22:00:29 369 RIGHT VARCHAR2 CHARACTER SET ANY_CS) return BOOLEAN; 22:00:29 370 pragma BUILTIN('>=',3, 1, 19); -- PEMS_CHAR, PEMDCMGE (VARCHAR2 SEMANTICS) 22:00:29 371 pragma FIPSFLAG('>=', 1454); 22:00:29 372 22:00:29 373 function '||' (LEFT VARCHAR2 CHARACTER SET ANY_CS, 22:00:29 374 RIGHT VARCHAR2 CHARACTER SET ANY_CS) 22:00:29 375 return VARCHAR2 CHARACTER SET LEFT%CHARSET; 22:00:29 376 pragma BUILTIN('||',25, 1, 7); -- PEMS_CHAR, CHAR_CONCAT 22:00:29 377 pragma FIPSFLAG('||', 1454); 22:00:29 378 22:00:29 379 function CONCAT(LEFT VARCHAR2 CHARACTER SET ANY_CS, 22:00:29 380 RIGHT VARCHAR2 CHARACTER SET ANY_CS) 22:00:29 381 return VARCHAR2 CHARACTER SET LEFT%CHARSET; 22:00:29 382 pragma BUILTIN(CONCAT,25, 1, 7); -- PEMS_CHAR, CHAR_CONCAT 22:00:29 383 pragma FIPSFLAG(CONCAT, 1454); 22:00:29 384 22:00:29 385 function LENGTH(ch VARCHAR2 CHARACTER SET ANY_CS) return natural; 22:00:29 386 pragma FIPSFLAG('LENGTH', 1452); 22:00:29 387 -- In SUBSTR, LEN defaults to remainder of string 22:00:29 388 -- In substr and instr, a negative value of parameter POS means to 22:00:29 389 -- count from the right end of the string. 22:00:29 390 function SUBSTR(STR1 VARCHAR2 CHARACTER SET ANY_CS, 22:00:29 391 POS PLS_INTEGER, 22:00:29 392 LEN PLS_INTEGER := 2147483647) 22:00:29 393 return VARCHAR2 CHARACTER SET STR1%CHARSET; 22:00:29 394 pragma FIPSFLAG('SUBSTR', 1452); 22:00:29 395 22:00:29 396 -- Find nth occurrence of str1 in str2 starting at pos 22:00:29 397 function INSTR(STR1 VARCHAR2 CHARACTER SET ANY_CS, 22:00:29 398 STR2 VARCHAR2 CHARACTER SET STR1%CHARSET, 22:00:29 399 POS PLS_INTEGER := 1, 22:00:29 400 NTH POSITIVE := 1) return PLS_INTEGER; 22:00:29 401 pragma FIPSFLAG('INSTR', 1452); 22:00:29 402 22:00:29 403 function UPPER(ch VARCHAR2 CHARACTER SET ANY_CS) 22:00:29 404 return VARCHAR2 CHARACTER SET ch%CHARSET; 22:00:29 405 pragma FIPSFLAG('UPPER', 1452); 22:00:29 406 function LOWER(ch VARCHAR2 CHARACTER SET ANY_CS) 22:00:29 407 return VARCHAR2 CHARACTER SET ch%CHARSET; 22:00:29 408 pragma FIPSFLAG('LOWER', 1452); 22:00:29 409 function ASCII(ch VARCHAR2 CHARACTER SET ANY_CS) 22:00:29 410 return INTEGER; -- should be ASCII.CHRANGE 22:00:29 411 pragma FIPSFLAG('ASCII', 1452); 22:00:29 412 function ASCIISTR(ch VARCHAR2 CHARACTER SET ANY_CS) 22:00:29 413 return VARCHAR2 CHARACTER SET ch%CHARSET; 22:00:29 414 pragma FIPSFLAG('ASCIISTR', 1452); 22:00:29 415 function UNISTR(ch VARCHAR2 CHARACTER SET ANY_CS) 22:00:29 416 return NVARCHAR2; 22:00:29 417 pragma FIPSFLAG('UNISTR', 1452); 22:00:29 418 function CHR(n INTEGER) return varchar2; -- N should be ASCII.CHRANGE 22:00:29 419 pragma FIPSFLAG('CHR', 1452); 22:00:29 420 function " SYS$STANDARD_CHR"(n INTEGER,csn VARCHAR2 CHARACTER SET ANY_CS) 22:00:29 421 return VARCHAR2 CHARACTER SET csn%CHARSET; 22:00:29 422 pragma FIPSFLAG(' SYS$STANDARD_CHR', 1452); 22:00:29 423 function INITCAP(ch VARCHAR2 CHARACTER SET ANY_CS) 22:00:29 424 return VARCHAR2 CHARACTER SET ch%CHARSET; 22:00:29 425 pragma FIPSFLAG('INITCAP', 1452); 22:00:29 426 function SOUNDEX(ch VARCHAR2 CHARACTER SET ANY_CS) 22:00:29 427 return VARCHAR2 CHARACTER SET ch%CHARSET; 22:00:29 428 pragma FIPSFLAG('SOUNDEX', 1452); 22:00:29 429 22:00:29 430 function LPAD(STR1 VARCHAR2 CHARACTER SET ANY_CS, 22:00:29 431 LEN pls_integer, 22:00:29 432 PAD VARCHAR2 CHARACTER SET STR1%CHARSET) 22:00:29 433 return VARCHAR2 CHARACTER SET STR1%CHARSET; 22:00:29 434 pragma FIPSFLAG('LPAD', 1452); 22:00:29 435 function LPAD(STR1 VARCHAR2 CHARACTER SET ANY_CS, 22:00:29 436 LEN pls_integer) 22:00:29 437 return VARCHAR2 CHARACTER SET STR1%CHARSET; 22:00:29 438 pragma FIPSFLAG('LPAD', 1452); 22:00:29 439 22:00:29 440 function RPAD(STR1 VARCHAR2 CHARACTER SET ANY_CS, 22:00:29 441 LEN pls_integer, 22:00:29 442 PAD VARCHAR2 CHARACTER SET STR1%CHARSET) 22:00:29 443 return VARCHAR2 CHARACTER SET STR1%CHARSET; 22:00:29 444 pragma FIPSFLAG('RPAD', 1452); 22:00:29 445 function RPAD(STR1 VARCHAR2 CHARACTER SET ANY_CS, 22:00:29 446 LEN pls_integer) 22:00:29 447 return VARCHAR2 CHARACTER SET STR1%CHARSET; 22:00:29 448 pragma FIPSFLAG('RPAD', 1452); 22:00:29 449 22:00:29 450 function TRANSLATE(STR1 VARCHAR2 CHARACTER SET ANY_CS, 22:00:29 451 SRC VARCHAR2 CHARACTER SET STR1%CHARSET, 22:00:29 452 DEST VARCHAR2 CHARACTER SET STR1%CHARSET) 22:00:29 453 return VARCHAR2 CHARACTER SET STR1%CHARSET; 22:00:29 454 pragma FIPSFLAG('TRANSLATE', 1452); 22:00:29 455 22:00:29 456 function REPLACE(SRCSTR VARCHAR2 CHARACTER SET ANY_CS, 22:00:29 457 OLDSUB VARCHAR2 CHARACTER SET SRCSTR%CHARSET, 22:00:29 458 NEWSUB VARCHAR2 CHARACTER SET SRCSTR%CHARSET := NULL) 22:00:29 459 return VARCHAR2 CHARACTER SET SRCSTR%CHARSET; 22:00:29 460 pragma FIPSFLAG('REPLACE', 1452); 22:00:29 461 22:00:29 462 function LTRIM(STR1 VARCHAR2 CHARACTER SET ANY_CS := ' ', 22:00:29 463 TSET VARCHAR2 CHARACTER SET STR1%CHARSET) 22:00:29 464 return VARCHAR2 CHARACTER SET STR1%CHARSET; 22:00:29 465 pragma FIPSFLAG('LTRIM', 1452); 22:00:29 466 function LTRIM(STR1 VARCHAR2 CHARACTER SET ANY_CS := ' ') 22:00:29 467 return VARCHAR2 CHARACTER SET STR1%CHARSET; 22:00:29 468 pragma FIPSFLAG('LTRIM', 1452); 22:00:29 469 22:00:29 470 function RTRIM(STR1 VARCHAR2 CHARACTER SET ANY_CS := ' ', 22:00:29 471 TSET VARCHAR2 CHARACTER SET STR1%CHARSET) 22:00:29 472 return VARCHAR2 CHARACTER SET STR1%CHARSET; 22:00:29 473 pragma FIPSFLAG('RTRIM', 1452); 22:00:29 474 function RTRIM(STR1 VARCHAR2 CHARACTER SET ANY_CS := ' ') 22:00:29 475 return VARCHAR2 CHARACTER SET STR1%CHARSET; 22:00:29 476 pragma FIPSFLAG('RTRIM', 1452); 22:00:29 477 22:00:29 478 function 'LIKE' (str VARCHAR2 CHARACTER SET ANY_CS, 22:00:29 479 pat VARCHAR2 CHARACTER SET str%CHARSET) 22:00:29 480 return BOOLEAN; 22:00:29 481 function 'NOT_LIKE' (str VARCHAR2 CHARACTER SET ANY_CS, 22:00:29 482 pat VARCHAR2 CHARACTER SET str%CHARSET) 22:00:29 483 return BOOLEAN; 22:00:29 484 function 'LIKE' (str VARCHAR2 CHARACTER SET ANY_CS, 22:00:29 485 pat VARCHAR2 CHARACTER SET str%CHARSET, 22:00:29 486 esc VARCHAR2 CHARACTER SET str%CHARSET) 22:00:29 487 return BOOLEAN; 22:00:29 488 function 'NOT_LIKE' (str VARCHAR2 CHARACTER SET ANY_CS, 22:00:29 489 pat VARCHAR2 CHARACTER SET str%CHARSET, 22:00:29 490 esc VARCHAR2 CHARACTER SET str%CHARSET) 22:00:29 491 return BOOLEAN; 22:00:29 492 function 'IS NULL' (s VARCHAR2 CHARACTER SET ANY_CS) return BOOLEAN; 22:00:29 493 pragma BUILTIN('IS NULL', 0, 1, 20); -- PEMS_CHAR, PEMDNUL 22:00:29 494 function 'IS NOT NULL' (s VARCHAR2 CHARACTER SET ANY_CS) return BOOLEAN; 22:00:29 495 pragma BUILTIN('IS NOT NULL', 0, 1, 50); -- PEMS_CHAR, PEMDNUL 22:00:29 496 22:00:29 497 function NVL(s1 VARCHAR2 CHARACTER SET ANY_CS, 22:00:29 498 s2 VARCHAR2 CHARACTER SET s1%CHARSET) 22:00:29 499 return VARCHAR2 CHARACTER SET s1%CHARSET; 22:00:29 500 pragma FIPSFLAG('NVL', 1452); 22:00:29 501 22:00:29 502 22:00:29 503 function '=' (LEFT NUMBER, RIGHT NUMBER) return BOOLEAN; 22:00:29 504 pragma BUILTIN('=',2, 2, 1); -- PEMS_NUMBER, PEMDCMEQ 22:00:29 505 function '!=' (LEFT NUMBER, RIGHT NUMBER) return BOOLEAN; -- also <> and ~= 22:00:29 506 pragma BUILTIN('!=',5, 2, 2); -- PEMS_NUMBER, PEMDCMNE 22:00:29 507 pragma FIPSFLAG('!=', 1452); 22:00:29 508 function '<' (LEFT NUMBER, RIGHT NUMBER) return BOOLEAN; 22:00:29 509 pragma BUILTIN('<',4, 2, 3); -- PEMS_NUMBER, PEMDCMLT 22:00:29 510 function '<=' (LEFT NUMBER, RIGHT NUMBER) return BOOLEAN; 22:00:29 511 pragma BUILTIN('<=',6, 2, 4); -- PEMS_NUMBER, PEMDCMLE 22:00:29 512 function '>' (LEFT NUMBER, RIGHT NUMBER) return BOOLEAN; 22:00:29 513 pragma BUILTIN('>',1, 2, 5); -- PEMS_NUMBER, PEMDCMGT 22:00:29 514 function '>=' (LEFT NUMBER, RIGHT NUMBER) return BOOLEAN; 22:00:29 515 pragma BUILTIN('>=',3, 2, 6); -- PEMS_NUMBER, PEMDCMGE 22:00:29 516 22:00:29 517 function 'IS NULL' (n NUMBER) return BOOLEAN; 22:00:29 518 pragma BUILTIN('IS NULL', 0, 2, 0); -- PEMS_NUMBER, PEMDNUL 22:00:29 519 function 'IS NOT NULL' (n NUMBER) return BOOLEAN; 22:00:29 520 pragma BUILTIN('IS NOT NULL', 0, 2, 50); -- PEMS_NUMBER, PEMDNUL 22:00:29 521 22:00:29 522 function NVL(n1 NUMBER, n2 NUMBER) return NUMBER; 22:00:29 523 pragma FIPSFLAG('NVL', 1452); 22:00:29 524 22:00:29 525 function '+' (RIGHT NUMBER) return NUMBER; 22:00:29 526 pragma BUILTIN('+',14, 0, 1); -- PEMS_QUICK 22:00:29 527 function '-' (RIGHT NUMBER) return NUMBER; 22:00:29 528 pragma BUILTIN('-',15, 2, 7); -- PEMS_NUMBER, NUM_NEG 22:00:29 529 function ABS(n NUMBER) return NUMBER; 22:00:29 530 pragma FIPSFLAG('ABS', 1452); 22:00:29 531 22:00:29 532 function '+' (LEFT NUMBER, RIGHT NUMBER) return NUMBER; 22:00:29 533 pragma BUILTIN('+',14, 2, 8); -- PEMS_NUMBER, NUM_ADD 22:00:29 534 function '-' (LEFT NUMBER, RIGHT NUMBER) return NUMBER; 22:00:29 535 pragma BUILTIN('-',15, 2, 9); -- PEMS_NUMBER, NUM_SUB 22:00:29 536 function '*' (LEFT NUMBER, RIGHT NUMBER) return NUMBER; 22:00:29 537 pragma BUILTIN('*',17, 2, 10); -- PEMS_NUMBER, NUM_MUL 22:00:29 538 function '/' (LEFT NUMBER, RIGHT NUMBER) return NUMBER; 22:00:29 539 pragma BUILTIN('/',18, 2, 11); -- PEMS_NUMBER, NUM_DIV 22:00:29 540 22:00:29 541 function 'REM' (LEFT NUMBER, RIGHT NUMBER) return NUMBER; 22:00:29 542 pragma FIPSFLAG('REM', 1452); 22:00:29 543 function 'MOD'(n1 NUMBER, n2 NUMBER) return NUMBER; 22:00:29 544 pragma FIPSFLAG('MOD', 1452); 22:00:29 545 22:00:29 546 function '**' (LEFT NUMBER, RIGHT NUMBER) return NUMBER; 22:00:29 547 pragma FIPSFLAG('**', 1452); 22:00:29 548 22:00:29 549 function FLOOR(n NUMBER) return NUMBER; 22:00:29 550 pragma FIPSFLAG('FLOOR', 1452); 22:00:29 551 function CEIL(n NUMBER) return NUMBER; 22:00:29 552 pragma FIPSFLAG('CEIL', 1452); 22:00:29 553 function SQRT(n NUMBER) return NUMBER; 22:00:29 554 pragma FIPSFLAG('SQRT', 1452); 22:00:29 555 function SIGN(n NUMBER) return SIGNTYPE; 22:00:29 556 pragma FIPSFLAG('SIGN', 1452); 22:00:29 557 22:00:29 558 function COS(N NUMBER) return NUMBER; 22:00:29 559 pragma FIPSFLAG('COS', 1452); 22:00:29 560 function SIN(N NUMBER) return NUMBER; 22:00:29 561 pragma FIPSFLAG('SIN', 1452); 22:00:29 562 function TAN(N NUMBER) return NUMBER; 22:00:29 563 pragma FIPSFLAG('TAN', 1452); 22:00:29 564 function COSH(N NUMBER) return NUMBER; 22:00:29 565 pragma FIPSFLAG('COSH', 1452); 22:00:29 566 function SINH(N NUMBER) return NUMBER; 22:00:29 567 pragma FIPSFLAG('SINH', 1452); 22:00:29 568 function TANH(N NUMBER) return NUMBER; 22:00:29 569 pragma FIPSFLAG('TANH', 1452); 22:00:29 570 22:00:29 571 function EXP(N NUMBER) return NUMBER; 22:00:29 572 function LN(N NUMBER) return NUMBER; 22:00:29 573 22:00:29 574 function BITAND (LEFT pls_integer, RIGHT pls_integer) 22:00:29 575 return pls_integer; 22:00:29 576 function BITAND (LEFT number, RIGHT number) 22:00:29 577 return number; 22:00:29 578 function LOG (LEFT NUMBER, RIGHT NUMBER) return NUMBER; 22:00:29 579 22:00:29 580 function TRUNC (n NUMBER, places pls_integer := 0) return NUMBER; 22:00:29 581 pragma FIPSFLAG('TRUNC', 1452); 22:00:29 582 22:00:29 583 function ROUND (LEFT NUMBER, RIGHT pls_integer := 0) return NUMBER; 22:00:29 584 pragma FIPSFLAG('ROUND', 1452); 22:00:29 585 22:00:29 586 function POWER (n NUMBER, e NUMBER) return NUMBER; 22:00:29 587 pragma FIPSFLAG('POWER', 1452); 22:00:29 588 22:00:29 589 function '=' (LEFT DATE, RIGHT DATE) return BOOLEAN; 22:00:29 590 pragma BUILTIN('=',2, 12, 1); -- PEMS_DATE, PEMDCMEQ 22:00:29 591 pragma FIPSFLAG('=', 1450); 22:00:29 592 function '!=' (LEFT DATE, RIGHT DATE) return BOOLEAN; -- also <> and ~= 22:00:29 593 pragma BUILTIN('!=',5, 12, 2); -- PEMS_DATE, PEMDCMNE 22:00:29 594 pragma FIPSFLAG('!=', 1450); 22:00:29 595 function '<' (LEFT DATE, RIGHT DATE) return BOOLEAN; 22:00:29 596 pragma BUILTIN('<',4, 12, 3); -- PEMS_DATE, PEMDCMLT 22:00:29 597 pragma FIPSFLAG('<', 1450); 22:00:29 598 function '<=' (LEFT DATE, RIGHT DATE) return BOOLEAN; 22:00:29 599 pragma BUILTIN('<=',6, 12, 4); -- PEMS_DATE, PEMDCMLE 22:00:29 600 pragma FIPSFLAG('<=', 1450); 22:00:29 601 function '>' (LEFT DATE, RIGHT DATE) return BOOLEAN; 22:00:29 602 pragma BUILTIN('>',1, 12, 5); -- PEMS_DATE, PEMDCMGT 22:00:29 603 pragma FIPSFLAG('>', 1450); 22:00:29 604 function '>=' (LEFT DATE, RIGHT DATE) return BOOLEAN; 22:00:29 605 pragma BUILTIN('>=',3, 12, 6); -- PEMS_DATE, PEMDCMGE 22:00:29 606 pragma FIPSFLAG('>=', 1450); 22:00:29 607 22:00:29 608 function '+' (LEFT DATE, RIGHT NUMBER) return DATE; 22:00:29 609 pragma BUILTIN('+',14, 12, 7); -- PEMS_DATE, DATE_ADD1 22:00:29 610 pragma FIPSFLAG('+', 1450); 22:00:29 611 function '+' (LEFT NUMBER, RIGHT DATE) return DATE; 22:00:29 612 pragma BUILTIN('+',14, 12, 8); -- PEMS_DATE, DATE_ADD2 22:00:29 613 pragma FIPSFLAG('+', 1450); 22:00:29 614 function '-' (LEFT DATE, RIGHT NUMBER) return DATE; 22:00:29 615 pragma BUILTIN('-',15, 12, 9); -- PEMS_DATE, DATE_SUB1 22:00:29 616 pragma FIPSFLAG('-', 1450); 22:00:29 617 function '-' (LEFT NUMBER, RIGHT DATE) return DATE; 22:00:29 618 pragma BUILTIN('-',15, 12, 10); -- PEMS_DATE, DATE_SUB2 22:00:29 619 pragma FIPSFLAG('-', 1450); 22:00:29 620 function '-' (LEFT DATE, RIGHT DATE) return NUMBER; 22:00:29 621 pragma BUILTIN('-',15, 12, 11); -- PEMS_DATE, DATE_SUB3 22:00:29 622 pragma FIPSFLAG('-', 1450); 22:00:29 623 22:00:29 624 function LAST_DAY(RIGHT DATE) return DATE; 22:00:29 625 pragma BUILTIN('LAST_DAY',38, 12, 12); -- PEMS_DATE, DATE_LAST_DAY 22:00:29 626 pragma FIPSFLAG('LAST_DAY', 1450); 22:00:29 627 function ADD_MONTHS(LEFT DATE, RIGHT NUMBER) return DATE; 22:00:29 628 pragma BUILTIN('ADD_MONTHS',39, 12, 13); -- PEMS_DATE, DATE_ADD_MONTHS1 22:00:29 629 pragma FIPSFLAG('ADD_MONTHS', 1450); 22:00:29 630 function ADD_MONTHS(LEFT NUMBER, RIGHT DATE) return DATE; 22:00:29 631 pragma BUILTIN('ADD_MONTHS',39, 12, 14); -- PEMS_DATE, DATE_ADD_MONTHS2 22:00:29 632 pragma FIPSFLAG('ADD_MONTHS', 1450); 22:00:29 633 22:00:29 634 function MONTHS_BETWEEN(LEFT DATE, RIGHT DATE) return NUMBER; 22:00:29 635 pragma BUILTIN('MONTHS_BETWEEN',42, 12, 15); -- PEMS_DATE, DATE_MONTHS_BET 22:00:29 636 pragma FIPSFLAG('MONTHS_BETWEEN', 1450); 22:00:29 637 function NEXT_DAY(LEFT DATE, RIGHT VARCHAR2) return DATE; 22:00:29 638 pragma BUILTIN('NEXT_DAY',43, 12, 16); -- PEMS_DATE, DATE_NEXT_DAY 22:00:29 639 pragma FIPSFLAG('NEXT_DAY', 1450); 22:00:29 640 function ROUND(RIGHT DATE) return DATE; 22:00:29 641 pragma BUILTIN('ROUND',24, 12, 17); -- PEMS_DATE, DATE_ROUND 22:00:29 642 pragma FIPSFLAG('ROUND', 1450); 22:00:29 643 function NEW_TIME(RIGHT DATE, MIDDLE VARCHAR2, LEFT VARCHAR2) return DATE; 22:00:29 644 pragma FIPSFLAG('NEW_TIME', 1450); 22:00:29 645 22:00:29 646 function 'IS NULL' (d DATE) return BOOLEAN; 22:00:29 647 pragma BUILTIN('IS NULL', 0, 12, 0); -- PEMS_DATE, PEMDNUL 22:00:29 648 pragma FIPSFLAG('IS NULL', 1450); 22:00:29 649 function 'IS NOT NULL' (d DATE) return BOOLEAN; 22:00:29 650 pragma BUILTIN('IS NOT NULL', 0, 12, 50); -- PEMS_DATE, PEMDNUL 22:00:29 651 pragma FIPSFLAG('IS NOT NULL', 1450); 22:00:29 652 function NVL (d1 DATE, d2 DATE) return DATE; 22:00:29 653 pragma FIPSFLAG('NVL', 1450); 22:00:29 654 22:00:29 655 function TRUNC(LEFT DATE) return DATE; 22:00:29 656 pragma BUILTIN('TRUNC',51, 12, 20); -- PEMS_DATE, DATE_TRUNC1 22:00:29 657 pragma FIPSFLAG('TRUNC', 1450); 22:00:29 658 function TRUNC(LEFT DATE, RIGHT VARCHAR2) return DATE; 22:00:29 659 pragma BUILTIN('TRUNC',51, 12, 21); -- PEMS_DATE, DATE_TRUNC2 22:00:29 660 pragma FIPSFLAG('TRUNC', 1450); 22:00:29 661 function ROUND(LEFT DATE, RIGHT VARCHAR2) return DATE; 22:00:29 662 pragma BUILTIN('ROUND',24, 12, 22); -- PEMS_DATE, DATE_ROUND2 22:00:29 663 pragma FIPSFLAG('ROUND', 1450); 22:00:29 664 22:00:29 665 function TO_DATE (RIGHT VARCHAR2 character set any_cs) return DATE; 22:00:29 666 pragma BUILTIN('TO_DATE',40, 1, 10); -- PEMS_CHAR, CHR_CNV_DAT 22:00:29 667 pragma FIPSFLAG('TO_DATE', 1450); 22:00:29 668 22:00:29 669 function TO_DATE (LEFT VARCHAR2 character set any_cs, 22:00:29 670 RIGHT VARCHAR2 character set LEFT%charset) return DATE; 22:00:29 671 pragma BUILTIN('TO_DATE',40, 1, 8); -- PEMS_CHAR, CHR_CNV_DATE 22:00:29 672 pragma FIPSFLAG('TO_DATE', 1450); 22:00:29 673 22:00:29 674 function TO_DATE (LEFT NUMBER, RIGHT VARCHAR2) return DATE; 22:00:29 675 pragma FIPSFLAG('TO_DATE', 1450); 22:00:29 676 22:00:29 677 function TO_DATE(left varchar2 character set any_cs, 22:00:29 678 format varchar2 character set LEFT%charset, 22:00:29 679 parms varchar2 character set LEFT%charset) return date; 22:00:29 680 22:00:29 681 function TO_CHAR (RIGHT VARCHAR2) return VARCHAR2; 22:00:29 682 pragma BUILTIN('TO_CHAR',14, 0, 2); 22:00:29 683 22:00:29 684 function TO_CHAR (LEFT DATE, RIGHT VARCHAR2) return VARCHAR2; 22:00:29 685 pragma BUILTIN('TO_CHAR',41, 12, 19); -- PEMS_DATE, DAT_CNV_CHR1 22:00:29 686 pragma FIPSFLAG('TO_CHAR', 1450); 22:00:29 687 22:00:29 688 function TO_CHAR (LEFT NUMBER, RIGHT VARCHAR2) return VARCHAR2; 22:00:29 689 pragma BUILTIN('TO_CHAR',41, 2, 14); -- PEMS_NUMBER, NUM_CNV_CHR 22:00:29 690 22:00:29 691 function TO_NUMBER (RIGHT NUMBER) RETURN NUMBER; 22:00:29 692 pragma BUILTIN('TO_NUMBER',14, 0, 1); -- PEMS_QUICK 22:00:29 693 22:00:29 694 function TO_NUMBER (RIGHT VARCHAR2 character set any_cs) return NUMBER; 22:00:29 695 pragma BUILTIN('TO_NUMBER',48, 1, 9); -- PEMS_CHAR, CHR_CNV_NUM 22:00:29 696 22:00:29 697 function TO_NUMBER(left varchar2 character set any_cs, 22:00:29 698 format varchar2 character set LEFT%charset) 22:00:29 699 return number; 22:00:29 700 function TO_NUMBER(left varchar2 character set any_cs, 22:00:29 701 format varchar2 character set LEFT%charset, 22:00:29 702 parms varchar2 character set LEFT%charset) 22:00:29 703 return number; 22:00:29 704 22:00:29 705 -- Define SQL predicates. These don't gen code, so no body is needed. 22:00:29 706 22:00:29 707 -- PRIOR is WEIRD - For now, it will be treated as a function call. 22:00:29 708 -- Does the function only take a column name? how about its use in 22:00:29 709 -- a predicate? 22:00:29 710 function 'PRIOR'(colname VARCHAR2 CHARACTER SET ANY_CS) 22:00:29 711 return VARCHAR2 CHARACTER SET colname%CHARSET; 22:00:29 712 pragma FIPSFLAG('PRIOR', 1452); 22:00:29 713 function 'PRIOR'(colname NUMBER) return NUMBER; 22:00:29 714 pragma FIPSFLAG('PRIOR', 1452); 22:00:29 715 function 'PRIOR'(colname DATE) return DATE; 22:00:29 716 pragma FIPSFLAG('PRIOR', 1450); 22:00:29 717 22:00:29 718 -- Outer Join has same problem as PRIOR 22:00:29 719 function '(+)'(colname VARCHAR2 CHARACTER SET ANY_CS) 22:00:29 720 return VARCHAR2 CHARACTER SET colname%CHARSET; 22:00:29 721 function '(+)'(colname NUMBER) return NUMBER; 22:00:29 722 function '(+)'(colname DATE) return DATE; 22:00:29 723 pragma FIPSFLAG('(+)', 1450); 22:00:29 724 22:00:29 725 function '=ANY' (LEFT VARCHAR2 CHARACTER SET ANY_CS, 22:00:29 726 RIGHT VARCHAR2 CHARACTER SET LEFT%CHARSET) 22:00:29 727 return BOOLEAN; 22:00:29 728 function '=ANY' (LEFT DATE, RIGHT DATE) return BOOLEAN; 22:00:29 729 pragma FIPSFLAG('=ANY', 1450); 22:00:29 730 function '=ANY' (LEFT NUMBER, RIGHT NUMBER) return BOOLEAN; 22:00:29 731 22:00:29 732 function '!=ANY' (LEFT VARCHAR2 CHARACTER SET ANY_CS, 22:00:29 733 RIGHT VARCHAR2 CHARACTER SET LEFT%CHARSET) 22:00:29 734 return BOOLEAN; 22:00:29 735 function '!=ANY' (LEFT DATE, RIGHT DATE) return BOOLEAN; 22:00:29 736 pragma FIPSFLAG('!=ANY', 1450); 22:00:29 737 function '!=ANY' (LEFT NUMBER, RIGHT NUMBER) return BOOLEAN; 22:00:29 738 22:00:29 739 function 'ANY' (LEFT VARCHAR2 CHARACTER SET ANY_CS, 22:00:29 754 RIGHT VARCHAR2 CHARACTER SET LEFT%CHARSET) 22:00:29 755 return BOOLEAN; 22:00:29 756 function '>ANY' (LEFT DATE, RIGHT DATE) return BOOLEAN; 22:00:29 757 pragma FIPSFLAG('>ANY', 1450); 22:00:29 758 function '>ANY' (LEFT NUMBER, RIGHT NUMBER) return BOOLEAN; 22:00:29 759 22:00:29 760 function '>=ANY' (LEFT VARCHAR2 CHARACTER SET ANY_CS, 22:00:29 761 RIGHT VARCHAR2 CHARACTER SET LEFT%CHARSET) 22:00:29 762 return BOOLEAN; 22:00:29 763 function '>=ANY' (LEFT DATE, RIGHT DATE) return BOOLEAN; 22:00:29 764 pragma FIPSFLAG('>=ANY', 1450); 22:00:29 765 function '>=ANY' (LEFT NUMBER, RIGHT NUMBER) return BOOLEAN; 22:00:29 766 22:00:29 767 function '=ALL' (LEFT VARCHAR2 CHARACTER SET ANY_CS, 22:00:29 768 RIGHT VARCHAR2 CHARACTER SET LEFT%CHARSET) 22:00:29 769 return BOOLEAN; 22:00:29 770 function '=ALL' (LEFT DATE, RIGHT DATE) return BOOLEAN; 22:00:29 771 pragma FIPSFLAG('=ALL', 1450); 22:00:29 772 function '=ALL' (LEFT NUMBER, RIGHT NUMBER) return BOOLEAN; 22:00:29 773 22:00:29 774 function '!=ALL' (LEFT VARCHAR2 CHARACTER SET ANY_CS, 22:00:29 775 RIGHT VARCHAR2 CHARACTER SET LEFT%CHARSET) 22:00:29 776 return BOOLEAN; 22:00:29 777 function '!=ALL' (LEFT DATE, RIGHT DATE) return BOOLEAN; 22:00:29 778 pragma FIPSFLAG('!=ALL', 1450); 22:00:29 779 function '!=ALL' (LEFT NUMBER, RIGHT NUMBER) return BOOLEAN; 22:00:29 780 22:00:29 781 function 'ALL' (LEFT VARCHAR2 CHARACTER SET ANY_CS, 22:00:29 796 RIGHT VARCHAR2 CHARACTER SET LEFT%CHARSET) 22:00:29 797 return BOOLEAN; 22:00:29 798 function '>ALL' (LEFT DATE, RIGHT DATE) return BOOLEAN; 22:00:29 799 pragma FIPSFLAG('>ALL', 1450); 22:00:29 800 function '>ALL' (LEFT NUMBER, RIGHT NUMBER) return BOOLEAN; 22:00:29 801 22:00:29 802 function '>=ALL' (LEFT VARCHAR2 CHARACTER SET ANY_CS, 22:00:29 803 RIGHT VARCHAR2 CHARACTER SET LEFT%CHARSET) 22:00:29 804 return BOOLEAN; 22:00:29 805 function '>=ALL' (LEFT DATE, RIGHT DATE) return BOOLEAN; 22:00:29 806 pragma FIPSFLAG('>=ALL', 1450); 22:00:29 807 function '>=ALL' (LEFT NUMBER, RIGHT NUMBER) return BOOLEAN; 22:00:29 808 22:00:29 809 function '=SOME' (LEFT VARCHAR2 CHARACTER SET ANY_CS, 22:00:29 810 RIGHT VARCHAR2 CHARACTER SET LEFT%CHARSET) 22:00:29 811 return BOOLEAN; 22:00:29 812 function '=SOME' (LEFT DATE, RIGHT DATE) return BOOLEAN; 22:00:29 813 pragma FIPSFLAG('=SOME', 1450); 22:00:29 814 function '=SOME' (LEFT NUMBER, RIGHT NUMBER) return BOOLEAN; 22:00:29 815 22:00:29 816 function '!=SOME' (LEFT VARCHAR2 CHARACTER SET ANY_CS, 22:00:29 817 RIGHT VARCHAR2 CHARACTER SET LEFT%CHARSET) 22:00:29 818 return BOOLEAN; 22:00:29 819 function '!=SOME' (LEFT DATE, RIGHT DATE) return BOOLEAN; 22:00:29 820 pragma FIPSFLAG('!=SOME', 1450); 22:00:29 821 function '!=SOME' (LEFT NUMBER, RIGHT NUMBER) return BOOLEAN; 22:00:29 822 22:00:29 823 function 'SOME' (LEFT VARCHAR2 CHARACTER SET ANY_CS, 22:00:29 838 RIGHT VARCHAR2 CHARACTER SET LEFT%CHARSET) 22:00:29 839 return BOOLEAN; 22:00:29 840 function '>SOME' (LEFT DATE, RIGHT DATE) return BOOLEAN; 22:00:29 841 pragma FIPSFLAG('>SOME', 1450); 22:00:29 842 function '>SOME' (LEFT NUMBER, RIGHT NUMBER) return BOOLEAN; 22:00:29 843 22:00:29 844 function '>=SOME' (LEFT VARCHAR2 CHARACTER SET ANY_CS, 22:00:29 845 RIGHT VARCHAR2 CHARACTER SET LEFT%CHARSET) 22:00:29 846 return BOOLEAN; 22:00:29 847 function '>=SOME' (LEFT DATE, RIGHT DATE) return BOOLEAN; 22:00:29 848 pragma FIPSFLAG('>=SOME', 1450); 22:00:29 849 function '>=SOME' (LEFT NUMBER, RIGHT NUMBER) return BOOLEAN; 22:00:29 850 22:00:29 851 -- SQL Transaction routines 22:00:29 852 procedure SET_TRANSACTION_USE(vc VARCHAR2); 22:00:29 853 procedure COMMIT; 22:00:29 854 procedure COMMIT_CM(vc VARCHAR2); 22:00:29 855 procedure ROLLBACK_NR; 22:00:29 856 procedure ROLLBACK_SV(Save_Point CHAR); 22:00:29 857 procedure SAVEPOINT(Save_Point CHAR); 22:00:29 858 22:00:29 859 function SYSDATE return DATE; 22:00:29 860 pragma FIPSFLAG('SYSDATE', 1452); 22:00:29 861 22:00:29 862 function UID return PLS_INTEGER; 22:00:29 863 pragma FIPSFLAG('UID', 1452); 22:00:29 864 22:00:29 865 function USER return VARCHAR2; 22:00:29 866 22:00:29 867 function USERENV (envstr VARCHAR2) return VARCHAR2; 22:00:29 868 pragma FIPSFLAG('USERENV', 1452); 22:00:29 869 22:00:29 870 -- ROWID: this dreadful identifier is supposed to represent a datatype 22:00:29 871 -- outside of SQL and and a pseudo-column (function, to us) when inside 22:00:29 872 -- a sql statement. ADA data model doesn't allow for any 22:00:29 873 -- function X return X; 22:00:29 874 -- so we must special case this. Yuk. There's special-case code in ph2nre 22:00:29 875 -- which maps "rowid" to "rowid " if we're inside a SQL stmt. 22:00:29 876 function "ROWID " return ROWID; 22:00:29 877 pragma builtin('ROWID ', 1, 209, 240); -- this had better never be called. 22:00:29 878 22:00:29 879 function NULLFN (str VARCHAR2) return RAW; 22:00:29 880 pragma builtin('NULLFN', 1, 0, 1); 22:00:29 881 22:00:29 882 function HEXTORAW (c VARCHAR2) return RAW; 22:00:29 883 pragma builtin('HEXTORAW', 1, 23, 1); 22:00:29 884 22:00:29 885 function RAWTOHEX (r RAW) return VARCHAR2; 22:00:29 886 pragma builtin('RAWTOHEX', 1, 23, 2); 22:00:29 887 22:00:29 888 function CHARTOROWID (str VARCHAR2) return ROWID; 22:00:29 889 pragma builtin('CHARTOROWID', 1, 0, 1); 22:00:29 890 22:00:29 891 function ROWIDTOCHAR (str ROWID) return VARCHAR2; 22:00:29 892 pragma builtin('ROWIDTOCHAR', 1, 0, 1); 22:00:29 893 22:00:29 894 22:00:29 895 -- Trusted*Oracle additions 22:00:29 896 Function ROWLABEL return MLSLABEL; -- pseudo column 22:00:29 897 22:00:29 898 Function TO_CHAR(label MLSLABEL, format VARCHAR2) return VARCHAR2; 22:00:29 899 pragma BUILTIN('TO_CHAR',90, 4, 19); -- PEMS_DATE, MLS_CNV_CHR1 22:00:29 900 pragma FIPSFLAG('TO_CHAR', 1450); 22:00:29 901 22:00:29 902 Function TO_LABEL(label VARCHAR2, format VARCHAR2 ) return MLSLABEL; 22:00:29 903 pragma BUILTIN('TO_LABEL',90, 4, 8); -- PEMS_CHAR, CHR_CNV_MLS 22:00:29 904 pragma FIPSFLAG('TO_LABEL', 1450); 22:00:29 905 22:00:29 906 Function TO_LABEL(label VARCHAR2 ) return MLSLABEL; 22:00:29 907 pragma BUILTIN('TO_LABEL',90, 4, 2); -- PEMS_CHAR, CHR_CNV_MLS 22:00:29 908 pragma FIPSFLAG('TO_LABEL', 1450); 22:00:29 909 22:00:29 910 -- vararg routines - icds in stdbdy 22:00:29 911 Function LEAST_UB (pattern MLSLABEL) return MLSLABEL; 22:00:29 912 pragma BUILTIN('LEAST_UB',90, 4, 3); -- PEMS_CHAR, CHR_CNV_MLS 22:00:29 913 Function GREATEST_LB (pattern MLSLABEL) return MLSLABEL; 22:00:29 914 pragma BUILTIN('GREATEST_LB',90, 4, 4); -- PEMS_CHAR, CHR_CNV_MLS 22:00:29 915 22:00:29 916 Function '>=' (label1 MLSLABEL, label2 MLSLABEL) return BOOLEAN; 22:00:29 917 Function '>' (label1 MLSLABEL, label2 MLSLABEL) return BOOLEAN; 22:00:29 918 Function '<=' (label1 MLSLABEL, label2 MLSLABEL) return BOOLEAN; 22:00:29 919 Function '<' (label1 MLSLABEL, label2 MLSLABEL) return BOOLEAN; 22:00:29 920 Function '=' (label1 MLSLABEL, label2 MLSLABEL) return BOOLEAN; 22:00:29 921 Function '!=' (label1 MLSLABEL, label2 MLSLABEL) return BOOLEAN; 22:00:29 922 function 'IS NULL' (label MLSLABEL) return BOOLEAN; 22:00:29 923 pragma BUILTIN('IS NULL', 0, 1, 20); -- same "cod" as IS NULL(varchar2) 22:00:29 924 function 'IS NOT NULL' (label MLSLABEL) return BOOLEAN; 22:00:29 925 pragma BUILTIN('IS NOT NULL', 0, 1, 50); 22:00:29 926 22:00:29 927 function NVL(label1 MLSLABEL, label2 MLSLABEL) return MLSLABEL; 22:00:29 928 pragma FIPSFLAG('NVL', 1452); 22:00:29 929 22:00:29 930 -- group functions 22:00:29 931 Function LUB (label MLSLABEL) return MLSLABEL; 22:00:29 932 Function GLB (label MLSLABEL) return MLSLABEL; 22:00:29 933 22:00:29 934 -- end of Trusted*Oracle additions 22:00:29 935 22:00:29 936 22:00:29 937 -- beginning of NLS routines 22:00:29 938 22:00:29 939 function NLSSORT(c VARCHAR2 CHARACTER SET ANY_CS) return RAW; 22:00:29 940 pragma FIPSFLAG('NLSSORT', 1452); 22:00:29 941 function NLSSORT(c VARCHAR2 CHARACTER SET ANY_CS, c2 VARCHAR2) return RAW; 22:00:29 942 pragma FIPSFLAG('NLSSORT', 1452); 22:00:29 943 function NLS_UPPER(ch VARCHAR2 CHARACTER SET ANY_CS, 22:00:29 944 parms VARCHAR2 CHARACTER SET ch%CHARSET) 22:00:29 945 return VARCHAR2 CHARACTER SET ch%CHARSET; 22:00:29 946 pragma FIPSFLAG('NLS_UPPER', 1452); 22:00:29 947 function NLS_UPPER(ch VARCHAR2 CHARACTER SET ANY_CS) 22:00:29 948 return VARCHAR2 CHARACTER SET ch%CHARSET; 22:00:29 949 pragma FIPSFLAG('NLS_UPPER', 1452); 22:00:29 950 function NLS_LOWER(ch VARCHAR2 CHARACTER SET ANY_CS, 22:00:29 951 parms VARCHAR2 CHARACTER SET ch%CHARSET) 22:00:29 952 return VARCHAR2 CHARACTER SET ch%CHARSET; 22:00:29 953 pragma FIPSFLAG('NLS_LOWER', 1452); 22:00:29 954 function NLS_LOWER(ch VARCHAR2 CHARACTER SET ANY_CS) 22:00:29 955 return VARCHAR2 CHARACTER SET ch%CHARSET; 22:00:29 956 pragma FIPSFLAG('NLS_LOWER', 1452); 22:00:29 957 function NLS_INITCAP(ch VARCHAR2 CHARACTER SET ANY_CS, 22:00:29 958 parms VARCHAR2 CHARACTER SET ch%CHARSET) 22:00:29 959 return VARCHAR2 CHARACTER SET ch%CHARSET; 22:00:29 960 pragma FIPSFLAG('NLS_INITCAP', 1452); 22:00:29 961 function NLS_INITCAP(ch VARCHAR2 CHARACTER SET ANY_CS) 22:00:29 962 return VARCHAR2 CHARACTER SET ch%CHARSET; 22:00:29 963 pragma FIPSFLAG('NLS_INITCAP', 1452); 22:00:29 964 22:00:29 965 function LENGTHB(ch VARCHAR2 CHARACTER SET ANY_CS) return NUMBER; 22:00:29 966 pragma FIPSFLAG('LENGTHB', 1452); 22:00:29 967 function SUBSTRB(STR1 VARCHAR2 CHARACTER SET ANY_CS, 22:00:29 968 POS PLS_INTEGER, 22:00:29 969 LEN PLS_INTEGER := 2147483647) 22:00:29 970 return VARCHAR2 CHARACTER SET STR1%CHARSET; 22:00:29 971 pragma FIPSFLAG('SUBSTRB', 1452); 22:00:29 972 function INSTRB(STR1 VARCHAR2 CHARACTER SET ANY_CS, 22:00:29 973 STR2 VARCHAR2 CHARACTER SET STR1%CHARSET, 22:00:29 974 POS PLS_INTEGER := 1, 22:00:29 975 NTH POSITIVE := 1) return PLS_INTEGER; 22:00:29 976 pragma FIPSFLAG('INSTRB', 1452); 22:00:29 977 22:00:29 978 function TO_SINGLE_BYTE(c VARCHAR2 CHARACTER SET ANY_CS) 22:00:29 979 return VARCHAR2 CHARACTER SET c%CHARSET; 22:00:29 980 pragma FIPSFLAG('TO_SINGLE_BYTE', 1452); 22:00:29 981 function TO_MULTI_BYTE(c VARCHAR2 CHARACTER SET ANY_CS) 22:00:29 982 return VARCHAR2 CHARACTER SET c%CHARSET; 22:00:29 983 pragma FIPSFLAG('TO_MULTI_BYTE', 1452); 22:00:29 984 22:00:29 985 -- Next two added for NLS 6/3/92 JEM. 22:00:29 986 function TO_CHAR(left date, format varchar2, parms varchar2) return varchar2; 22:00:29 987 function TO_CHAR(left number, format varchar2, parms varchar2) 22:00:29 988 return varchar2; 22:00:29 989 function NLS_CHARSET_NAME(csetid PLS_INTEGER) return VARCHAR2; 22:00:29 990 function NLS_CHARSET_ID(csetname VARCHAR2) return PLS_INTEGER; 22:00:29 991 function NLS_CHARSET_DECL_LEN(bytecnt NUMBER, csetid NUMBER) 22:00:29 992 return PLS_INTEGER; 22:00:29 993 22:00:29 994 -- end of NLS routines 22:00:29 995 22:00:29 996 function CONVERT(src VARCHAR2 character set any_cs, 22:00:29 997 destcset VARCHAR2) 22:00:29 998 return VARCHAR2 character set src%charset; 22:00:29 999 function CONVERT(src VARCHAR2 character set any_cs, 22:00:29 1000 destcset VARCHAR2, 22:00:29 1001 srccset VARCHAR2) 22:00:29 1002 return VARCHAR2 character set src%charset; 22:00:29 1003 22:00:29 1004 function " SYS$STANDARD_TRANSLATE" (src VARCHAR2 CHARACTER SET ANY_CS, 22:00:29 1005 csn VARCHAR2 CHARACTER SET ANY_CS) 22:00:29 1006 return VARCHAR2 CHARACTER SET csn%CHARSET; 22:00:29 1007 pragma FIPSFLAG(' SYS$STANDARD_TRANSLATE',1452); 22:00:29 1008 22:00:29 1009 function VSIZE (e number ) return NUMBER; 22:00:29 1010 pragma builtin('VSIZE', 1, 0, 1); 22:00:29 1011 function VSIZE (e DATE) return NUMBER; 22:00:29 1012 pragma builtin('VSIZE', 1, 0, 1); 22:00:29 1013 function VSIZE (e VARCHAR2 CHARACTER SET ANY_CS) return NUMBER; 22:00:29 1014 pragma builtin('VSIZE', 1, 0, 1); 22:00:29 1015 22:00:29 1016 22:00:29 1017 -- dump( expr [,display_format[,start_pos[,length]]]) return VARCHAR2 22:00:29 1018 function DUMP(e varchar2 character set any_cs, 22:00:29 1019 df pls_integer := null,sp pls_integer := null, 22:00:29 1020 len pls_integer := null) return VARCHAR2; 22:00:29 1021 pragma builtin('DUMP', 1, 0, 1); 22:00:29 1022 22:00:29 1023 function DUMP(e number,df pls_integer := null,sp pls_integer := null, 22:00:29 1024 len pls_integer := null) return VARCHAR2; 22:00:29 1025 pragma builtin('DUMP', 1, 0, 1); 22:00:29 1026 22:00:29 1027 function DUMP(e date,df pls_integer := null,sp pls_integer := null, 22:00:29 1028 len pls_integer := null) return VARCHAR2; 22:00:29 1029 pragma builtin('DUMP', 1, 0, 1); 22:00:29 1030 22:00:29 1031 -- 22:00:29 1032 -- ACOS, ASIN, ATAN, ATAN2 22:00:29 1033 -- Inverse Trigonometric functions 22:00:29 1034 -- These functions return NULL if any of the inputs are NULL 22:00:29 1035 -- 22:00:29 1036 function ACOS(N NUMBER) return NUMBER; 22:00:29 1037 pragma FIPSFLAG('ACOS', 1452); 22:00:29 1038 22:00:29 1039 function ASIN(N NUMBER) return NUMBER; 22:00:29 1040 pragma FIPSFLAG('ASIN', 1452); 22:00:29 1041 22:00:29 1042 function ATAN(N NUMBER) return NUMBER; 22:00:29 1043 pragma FIPSFLAG('ATAN', 1452); 22:00:29 1044 22:00:29 1045 function ATAN2(x NUMBER, y NUMBER) return NUMBER; 22:00:29 1046 pragma FIPSFLAG('ATAN2', 1452); 22:00:29 1047 22:00:29 1048 --#### This is the end of 7.3 Standard 22:00:29 1049 22:00:29 1050 -- LOB IS NULL 22:00:29 1051 function 'IS NULL' (n CLOB CHARACTER SET ANY_CS) return BOOLEAN; 22:00:29 1052 pragma BUILTIN('IS NULL', 0, 2, 0); -- PEMS_NUMBER, PEMDNUL 22:00:29 1053 function 'IS NOT NULL' (n CLOB CHARACTER SET ANY_CS) return BOOLEAN; 22:00:29 1054 pragma BUILTIN('IS NOT NULL', 0, 2, 50); 22:00:29 1055 22:00:29 1056 function 'IS NULL' (n BLOB) return BOOLEAN; 22:00:29 1057 pragma BUILTIN('IS NULL', 0, 2, 0); -- PEMS_NUMBER, PEMDNUL 22:00:29 1058 function 'IS NOT NULL' (n BLOB) return BOOLEAN; 22:00:29 1059 pragma BUILTIN('IS NOT NULL', 0, 2, 50); 22:00:29 1060 22:00:29 1061 function 'IS NULL' (n BFILE) return BOOLEAN; 22:00:29 1062 pragma BUILTIN('IS NULL', 0, 2, 0); -- PEMS_NUMBER, PEMDNUL 22:00:29 1063 function 'IS NOT NULL' (n BFILE) return BOOLEAN; 22:00:29 1064 pragma BUILTIN('IS NOT NULL', 0, 2, 50); 22:00:29 1065 -- end LOB IS NULL 22:00:29 1066 22:00:29 1067 --**************************************************************** 22:00:29 1068 -- 20 mar 96 =G=> In the following, arguments "1, 1, 1" to pragma BUILTIN 22:00:29 1069 -- e.g., pragma builtin('whatever', 1, 1, 1) 22:00:29 1070 -- indicate that those three numeric arguments to pragma BUILTIN are unknown, 22:00:29 1071 -- because they are not yet implemented by the backend. 22:00:29 1072 22:00:29 1073 function '=' (LEFT "", RIGHT "") return BOOLEAN; 22:00:29 1074 pragma BUILTIN('=', 1, 1, 1); 22:00:29 1075 pragma FIPSFLAG('=', 1450); 22:00:29 1076 function '!=' (LEFT "", RIGHT "") return BOOLEAN; 22:00:29 1077 pragma BUILTIN('!=', 1, 1, 1); 22:00:29 1078 pragma FIPSFLAG('!=', 1450); 22:00:29 1079 function '<' (LEFT "", RIGHT "") return BOOLEAN; 22:00:29 1080 pragma BUILTIN('<', 1, 1, 1); 22:00:29 1081 pragma FIPSFLAG('<', 1450); 22:00:29 1082 function '<=' (LEFT "", RIGHT "") return BOOLEAN; 22:00:29 1083 pragma BUILTIN('<=', 1, 1, 1); 22:00:29 1084 pragma FIPSFLAG('<=', 1450); 22:00:29 1085 function '>' (LEFT "", RIGHT "") return BOOLEAN; 22:00:29 1086 pragma BUILTIN('>', 1, 1, 1); 22:00:29 1087 pragma FIPSFLAG('>', 1450); 22:00:29 1088 function '>=' (LEFT "", RIGHT "") return BOOLEAN; 22:00:29 1089 pragma BUILTIN('>=', 1, 1, 1); 22:00:29 1090 pragma FIPSFLAG('>=', 1450); 22:00:29 1091 22:00:29 1092 function '=ANY' (LEFT "", RIGHT "") return BOOLEAN; 22:00:29 1093 function '!=ANY' (LEFT "", RIGHT "") return BOOLEAN; 22:00:29 1094 function '", RIGHT "") return BOOLEAN; 22:00:29 1095 function '<=ANY' (LEFT "", RIGHT "") return BOOLEAN; 22:00:29 1096 function '>ANY' (LEFT "", RIGHT "") return BOOLEAN; 22:00:29 1097 function '>=ANY' (LEFT "", RIGHT "") return BOOLEAN; 22:00:29 1098 function '=ALL' (LEFT "", RIGHT "") return BOOLEAN; 22:00:29 1099 function '!=ALL' (LEFT "", RIGHT "") return BOOLEAN; 22:00:29 1100 function '", RIGHT "") return BOOLEAN; 22:00:29 1101 function '<=ALL' (LEFT "", RIGHT "") return BOOLEAN; 22:00:29 1102 function '>ALL' (LEFT "", RIGHT "") return BOOLEAN; 22:00:29 1103 function '>=ALL' (LEFT "", RIGHT "") return BOOLEAN; 22:00:29 1104 function '=SOME' (LEFT "", RIGHT "") return BOOLEAN; 22:00:29 1105 function '!=SOME' (LEFT "", RIGHT "") return BOOLEAN; 22:00:29 1106 function '", RIGHT "") return BOOLEAN; 22:00:29 1107 function '<=SOME' (LEFT "", RIGHT "") return BOOLEAN; 22:00:29 1108 function '>SOME' (LEFT "", RIGHT "") return BOOLEAN; 22:00:29 1109 function '>=SOME' (LEFT "", RIGHT "") return BOOLEAN; 22:00:29 1110 22:00:29 1111 -- Outer Join 22:00:29 1112 function '(+)' ( colname "") return ""; 22:00:29 1113 pragma FIPSFLAG('(+)', 1450); 22:00:29 1114 22:00:29 1115 -- GREATEST and LEAST are not yet supported for ADTs in 8.0.2. 22:00:29 1116 -- function GREATEST (pattern "") return ""; 22:00:29 1117 -- pragma BUILTIN('GREATEST', 1, 1, 1); 22:00:29 1118 22:00:29 1119 -- function LEAST (pattern "") return ""; 22:00:29 1120 -- pragma BUILTIN('LEAST', 1, 1, 1); 22:00:29 1121 22:00:29 1122 function DECODE (expr "", pat "", res "") 22:00:29 1123 return ""; 22:00:29 1124 pragma BUILTIN('DECODE', 1, 1, 1); 22:00:29 1125 22:00:29 1126 function 'IS NULL' (B "") return BOOLEAN; 22:00:29 1127 pragma BUILTIN('IS NULL', 0, 3, 0); 22:00:29 1128 pragma FIPSFLAG('IS NULL', 1450); 22:00:29 1129 22:00:29 1130 function 'IS NOT NULL' (B "") return BOOLEAN; 22:00:29 1131 pragma BUILTIN('IS NOT NULL', 0, 3, 50); 22:00:29 1132 pragma FIPSFLAG('IS NOT NULL', 1450); 22:00:29 1133 22:00:29 1134 function NVL (B1 "", B2 "") return ""; 22:00:29 1135 pragma FIPSFLAG('NVL', 1450); 22:00:29 1136 22:00:29 1137 function VALUE (item "") return ""; 22:00:29 1138 pragma BUILTIN('VALUE', 1, 1, 1); 22:00:29 1139 pragma FIPSFLAG('VALUE', 1450); 22:00:29 1140 22:00:29 1141 function REF (item "") return REF ""; 22:00:29 1142 pragma BUILTIN('REF', 1, 1, 1); 22:00:29 1143 pragma FIPSFLAG('REF', 1450); 22:00:29 1144 22:00:29 1145 function DEREF (r REF "") return ""; 22:00:29 1146 pragma BUILTIN('DEREF', 1, 1, 1); 22:00:29 1147 pragma FIPSFLAG('DEREF', 1450); 22:00:29 1148 22:00:29 1149 -- overloadings for REF ADT 22:00:29 1150 22:00:29 1151 function 'IS NULL' (B REF "") return BOOLEAN; 22:00:29 1152 pragma BUILTIN('IS NULL', 0, 3, 0); 22:00:29 1153 pragma FIPSFLAG('IS NULL', 1450); 22:00:29 1154 22:00:29 1155 function 'IS NOT NULL' (B REF "") return BOOLEAN; 22:00:29 1156 pragma BUILTIN('IS NOT NULL', 0, 3, 50); 22:00:29 1157 pragma FIPSFLAG('IS NOT NULL', 1450); 22:00:29 1158 22:00:29 1159 function 'IS DANGLING' (B REF "") return BOOLEAN; 22:00:29 1160 pragma BUILTIN('IS DANGLING', 1, 1, 1); 22:00:29 1161 pragma FIPSFLAG('IS DANGLING', 1450); 22:00:29 1162 22:00:29 1163 function 'IS NOT DANGLING' (B REF "") return BOOLEAN; 22:00:29 1164 pragma BUILTIN('IS NOT DANGLING', 1, 1, 1); 22:00:29 1165 pragma FIPSFLAG('IS NOT DANGLING', 1450); 22:00:29 1166 22:00:29 1167 function NVL (B1 REF "", B2 REF "") return REF ""; 22:00:29 1168 pragma FIPSFLAG('NVL', 1450); 22:00:29 1169 22:00:29 1170 function '=' (LEFT REF "", RIGHT REF "") return BOOLEAN; 22:00:29 1171 pragma BUILTIN('=', 0, 3, 1); 22:00:29 1172 pragma FIPSFLAG('=', 1450); 22:00:29 1173 22:00:29 1174 function '!=' (LEFT REF "", RIGHT REF "") return BOOLEAN; 22:00:29 1175 pragma BUILTIN('!=', 0, 3, 2); 22:00:29 1176 pragma FIPSFLAG('!=', 1450); 22:00:29 1177 22:00:29 1178 -- function '=' (LEFT "", RIGHT "") 22:00:29 1179 -- return BOOLEAN; 22:00:29 1180 -- pragma BUILTIN('=', 1, 1, 1); 22:00:29 1181 -- pragma FIPSFLAG('=', 1450); 22:00:29 1182 -- 22:00:29 1183 -- function '!=' (LEFT "", RIGHT "") 22:00:29 1184 -- return BOOLEAN; 22:00:29 1185 -- pragma BUILTIN('!=', 1, 1, 1); 22:00:29 1186 -- pragma FIPSFLAG('!=', 1450); 22:00:29 1187 -- 22:00:29 1188 -- function '=ANY' (LEFT "", RIGHT "") 22:00:29 1189 -- return BOOLEAN; 22:00:29 1190 -- function '!=ANY' (LEFT "", RIGHT "") 22:00:29 1191 -- return BOOLEAN; 22:00:29 1192 -- function '=ALL' (LEFT "", RIGHT "") 22:00:29 1193 -- return BOOLEAN; 22:00:29 1194 -- function '!=ALL' (LEFT "", RIGHT "") 22:00:29 1195 -- return BOOLEAN; 22:00:29 1196 -- function '=SOME' (LEFT "", RIGHT "") 22:00:29 1197 -- return BOOLEAN; 22:00:29 1198 -- function '!=SOME' (LEFT "", RIGHT "") 22:00:29 1199 -- return BOOLEAN; 22:00:29 1200 -- 22:00:29 1201 -- function DECODE (expr "", pat "", 22:00:29 1202 -- res "") 22:00:29 1203 -- return ""; 22:00:29 1204 -- pragma BUILTIN('DECODE', 1, 1, 1); 22:00:29 1205 22:00:29 1206 -- Note that index-by tables are never NULL: this function will always 22:00:29 1207 -- return FALSE for them. 22:00:29 1208 function 'IS NULL' (B "") return BOOLEAN; 22:00:29 1209 pragma BUILTIN('IS NULL', 0, 3, 0); 22:00:29 1210 pragma FIPSFLAG('IS NULL', 1450); 22:00:29 1211 22:00:29 1212 -- Note that index-by tables are never NULL: this function will always 22:00:29 1213 -- return TRUE for them. 22:00:29 1214 function 'IS NOT NULL' (B "") return BOOLEAN; 22:00:29 1215 pragma BUILTIN('IS NOT NULL', 0, 3, 50); 22:00:29 1216 pragma FIPSFLAG('IS NOT NULL', 1450); 22:00:29 1217 22:00:29 1218 -- Note that index-by tables are never NULL: this function will always 22:00:29 1219 -- return B1 for them. 22:00:29 1220 function NVL (B1 "", B2 "") 22:00:29 1221 return ""; 22:00:29 1222 pragma FIPSFLAG('NVL', 1450); 22:00:29 1223 22:00:29 1224 function 'IS NULL' (B "") return BOOLEAN; 22:00:29 1225 pragma BUILTIN('IS NULL', 0, 3, 0); 22:00:29 1226 pragma FIPSFLAG('IS NULL', 1450); 22:00:29 1227 22:00:29 1228 function 'IS NOT NULL' (B "") return BOOLEAN; 22:00:29 1229 pragma BUILTIN('IS NOT NULL', 0, 3, 50); 22:00:29 1230 pragma FIPSFLAG('IS NOT NULL', 1450); 22:00:29 1231 22:00:29 1232 function NVL (B1 "", B2 "") 22:00:29 1233 return ""; 22:00:29 1234 pragma FIPSFLAG('NVL', 1450); 22:00:29 1235 22:00:29 1236 -- Note that associative arrays are never NULL: this function will always 22:00:29 1237 -- return FALSE. 22:00:29 1238 function 'IS NULL' (B "") return BOOLEAN; 22:00:29 1239 pragma BUILTIN('IS NULL', 0, 3, 0); 22:00:29 1240 pragma FIPSFLAG('IS NULL', 1450); 22:00:29 1241 22:00:29 1242 -- Note that associative arrays are never NULL: this function will always 22:00:29 1243 -- return TRUE. 22:00:29 1244 function 'IS NOT NULL' (B "") return BOOLEAN; 22:00:29 1245 pragma BUILTIN('IS NOT NULL', 0, 3, 50); 22:00:29 1246 pragma FIPSFLAG('IS NOT NULL', 1450); 22:00:29 1247 22:00:29 1248 -- Note that associative arrays are never NULL: this function will always 22:00:29 1249 -- return B1. 22:00:29 1250 function NVL (B1 "", B2 "") 22:00:29 1251 return ""; 22:00:29 1252 pragma FIPSFLAG('NVL', 1450); 22:00:29 1253 22:00:29 1254 function EMPTY_CLOB return clob; 22:00:29 1255 function EMPTY_BLOB return blob; 22:00:29 1256 22:00:29 1257 function BFILENAME(directory varchar2,filename varchar2) return BFILE; 22:00:29 1258 22:00:29 1259 function "SYS$LOB_REPLICATION" (x in blob) return blob; 22:00:29 1260 function "SYS$LOB_REPLICATION" (x in clob character set any_cs) 22:00:29 1261 return clob character set x%charset; 22:00:29 1262 22:00:29 1263 --#### This is the end of 8.0 Standard 22:00:29 1264 22:00:29 1265 -- + overloadings 22:00:29 1266 22:00:29 1267 function '+'(LEFT TIMESTAMP_UNCONSTRAINED, RIGHT YMINTERVAL_UNCONSTRAINED) 22:00:29 1268 return TIMESTAMP_UNCONSTRAINED; 22:00:29 1269 function '+'(LEFT TIMESTAMP_UNCONSTRAINED, RIGHT DSINTERVAL_UNCONSTRAINED) 22:00:29 1270 return TIMESTAMP_UNCONSTRAINED; 22:00:29 1271 22:00:29 1272 function '+'(LEFT TIMESTAMP_TZ_UNCONSTRAINED, RIGHT YMINTERVAL_UNCONSTRAINED) 22:00:29 1273 return TIMESTAMP_TZ_UNCONSTRAINED ; 22:00:29 1274 function '+'(LEFT TIMESTAMP_TZ_UNCONSTRAINED, RIGHT DSINTERVAL_UNCONSTRAINED) 22:00:29 1275 return TIMESTAMP_TZ_UNCONSTRAINED ; 22:00:29 1276 22:00:29 1277 function '+'(LEFT TIME_UNCONSTRAINED, RIGHT DSINTERVAL_UNCONSTRAINED) 22:00:29 1278 return TIME_UNCONSTRAINED; 22:00:29 1279 22:00:29 1280 function '+'(LEFT TIME_TZ_UNCONSTRAINED, RIGHT DSINTERVAL_UNCONSTRAINED) 22:00:29 1281 return TIME_TZ_UNCONSTRAINED; 22:00:29 1282 22:00:29 1283 function '+'(LEFT date, RIGHT YMINTERVAL_UNCONSTRAINED) return date ; 22:00:29 1284 function '+'(LEFT date, RIGHT DSINTERVAL_UNCONSTRAINED) return date ; 22:00:29 1285 function '+'(LEFT YMINTERVAL_UNCONSTRAINED, RIGHT TIMESTAMP_UNCONSTRAINED) 22:00:29 1286 return TIMESTAMP_UNCONSTRAINED; 22:00:29 1287 function '+'(LEFT YMINTERVAL_UNCONSTRAINED, RIGHT TIMESTAMP_TZ_UNCONSTRAINED) 22:00:29 1288 return TIMESTAMP_TZ_UNCONSTRAINED ; 22:00:29 1289 function '+'(LEFT YMINTERVAL_UNCONSTRAINED, RIGHT date) return date ; 22:00:29 1290 22:00:29 1291 function '+'(LEFT DSINTERVAL_UNCONSTRAINED, RIGHT TIMESTAMP_UNCONSTRAINED) 22:00:29 1292 return TIMESTAMP_UNCONSTRAINED; 22:00:29 1293 function '+'(LEFT DSINTERVAL_UNCONSTRAINED, RIGHT TIMESTAMP_TZ_UNCONSTRAINED) 22:00:29 1294 return TIMESTAMP_TZ_UNCONSTRAINED ; 22:00:29 1295 function '+'(LEFT DSINTERVAL_UNCONSTRAINED, RIGHT TIME_UNCONSTRAINED) 22:00:29 1296 return TIME_UNCONSTRAINED ; 22:00:29 1297 function '+'(LEFT DSINTERVAL_UNCONSTRAINED, RIGHT TIME_TZ_UNCONSTRAINED) 22:00:29 1298 return TIME_TZ_UNCONSTRAINED ; 22:00:29 1299 function '+'(LEFT DSINTERVAL_UNCONSTRAINED, RIGHT date) return date ; 22:00:29 1300 22:00:29 1301 function '+'(LEFT DSINTERVAL_UNCONSTRAINED, RIGHT DSINTERVAL_UNCONSTRAINED) 22:00:29 1302 return DSINTERVAL_UNCONSTRAINED ; 22:00:29 1303 function '+'(LEFT YMINTERVAL_UNCONSTRAINED, RIGHT YMINTERVAL_UNCONSTRAINED) 22:00:29 1304 return YMINTERVAL_UNCONSTRAINED ; 22:00:29 1305 22:00:29 1306 -- begin subtract 22:00:29 1307 function " SYS$DSINTERVALSUBTRACT"(LEFT TIMESTAMP_UNCONSTRAINED, 22:00:29 1308 RIGHT TIMESTAMP_UNCONSTRAINED) 22:00:29 1309 return DSINTERVAL_UNCONSTRAINED ; 22:00:29 1310 function " SYS$YMINTERVALSUBTRACT"(LEFT TIMESTAMP_UNCONSTRAINED, 22:00:29 1311 RIGHT TIMESTAMP_UNCONSTRAINED) 22:00:29 1312 return YMINTERVAL_UNCONSTRAINED ; 22:00:29 1313 function '-'(LEFT TIMESTAMP_UNCONSTRAINED, RIGHT YMINTERVAL_UNCONSTRAINED) 22:00:29 1314 return TIMESTAMP_UNCONSTRAINED; 22:00:29 1315 function '-'(LEFT TIMESTAMP_UNCONSTRAINED, RIGHT DSINTERVAL_UNCONSTRAINED) 22:00:29 1316 return TIMESTAMP_UNCONSTRAINED; 22:00:29 1317 22:00:29 1318 function " SYS$DSINTERVALSUBTRACT" 22:00:29 1319 (LEFT TIMESTAMP_TZ_UNCONSTRAINED, RIGHT TIMESTAMP_TZ_UNCONSTRAINED) 22:00:29 1320 return DSINTERVAL_UNCONSTRAINED ; 22:00:29 1321 function " SYS$YMINTERVALSUBTRACT" 22:00:29 1322 (LEFT TIMESTAMP_TZ_UNCONSTRAINED, RIGHT TIMESTAMP_TZ_UNCONSTRAINED) 22:00:29 1323 return YMINTERVAL_UNCONSTRAINED ; 22:00:29 1324 function '-' (LEFT TIMESTAMP_TZ_UNCONSTRAINED, RIGHT YMINTERVAL_UNCONSTRAINED) 22:00:29 1325 return TIMESTAMP_TZ_UNCONSTRAINED ; 22:00:29 1326 function '-' (LEFT TIMESTAMP_TZ_UNCONSTRAINED, RIGHT DSINTERVAL_UNCONSTRAINED) 22:00:29 1327 return TIMESTAMP_TZ_UNCONSTRAINED ; 22:00:29 1328 22:00:29 1329 function " SYS$DSINTERVALSUBTRACT" (LEFT TIME_UNCONSTRAINED, 22:00:29 1330 RIGHT TIME_UNCONSTRAINED) 22:00:29 1331 return DSINTERVAL_UNCONSTRAINED ; 22:00:29 1332 function '-' (LEFT TIME_UNCONSTRAINED, RIGHT DSINTERVAL_UNCONSTRAINED) 22:00:29 1333 return TIME_UNCONSTRAINED ; 22:00:29 1334 function " SYS$DSINTERVALSUBTRACT" 22:00:29 1335 (LEFT TIME_TZ_UNCONSTRAINED, RIGHT TIME_TZ_UNCONSTRAINED) 22:00:29 1336 return DSINTERVAL_UNCONSTRAINED ; 22:00:29 1337 function '-' (LEFT TIME_TZ_UNCONSTRAINED, RIGHT DSINTERVAL_UNCONSTRAINED) 22:00:29 1338 return TIME_TZ_UNCONSTRAINED ; 22:00:29 1339 function " SYS$DSINTERVALSUBTRACT" (LEFT date, RIGHT date) 22:00:29 1340 return DSINTERVAL_UNCONSTRAINED ; 22:00:29 1341 function " SYS$YMINTERVALSUBTRACT" (LEFT date, RIGHT date) 22:00:29 1342 return YMINTERVAL_UNCONSTRAINED ; 22:00:29 1343 function '-' (LEFT date, RIGHT YMINTERVAL_UNCONSTRAINED) return date; 22:00:29 1344 function '-' (LEFT date, RIGHT DSINTERVAL_UNCONSTRAINED) return date; 22:00:29 1345 22:00:29 1346 function '-' (LEFT YMINTERVAL_UNCONSTRAINED, RIGHT YMINTERVAL_UNCONSTRAINED) 22:00:29 1347 return YMINTERVAL_UNCONSTRAINED ; 22:00:29 1348 function '-' (LEFT DSINTERVAL_UNCONSTRAINED, RIGHT DSINTERVAL_UNCONSTRAINED) 22:00:29 1349 return DSINTERVAL_UNCONSTRAINED ; 22:00:29 1350 22:00:29 1351 -- end subtract 22:00:29 1352 22:00:29 1353 -- other datetime operators 22:00:29 1354 22:00:29 1355 function '*' (LEFT number, RIGHT YMINTERVAL_UNCONSTRAINED) 22:00:29 1356 return YMINTERVAL_UNCONSTRAINED ; 22:00:29 1357 function '*' (LEFT number, RIGHT DSINTERVAL_UNCONSTRAINED) 22:00:29 1358 return DSINTERVAL_UNCONSTRAINED ; 22:00:29 1359 22:00:29 1360 function '*' (LEFT YMINTERVAL_UNCONSTRAINED, RIGHT number) 22:00:29 1361 return YMINTERVAL_UNCONSTRAINED ; 22:00:29 1362 function '*' (LEFT DSINTERVAL_UNCONSTRAINED, RIGHT number) 22:00:29 1363 return DSINTERVAL_UNCONSTRAINED ; 22:00:29 1364 22:00:29 1365 function '/' (LEFT YMINTERVAL_UNCONSTRAINED, RIGHT number) 22:00:29 1366 return YMINTERVAL_UNCONSTRAINED ; 22:00:29 1367 function '/' (LEFT DSINTERVAL_UNCONSTRAINED, RIGHT number) 22:00:29 1368 return DSINTERVAL_UNCONSTRAINED ; 22:00:29 1369 22:00:29 1370 22:00:29 1371 function current_date return date; 22:00:29 1372 function current_time return TIME_TZ_UNCONSTRAINED; 22:00:29 1373 function current_timestamp return TIMESTAMP_TZ_UNCONSTRAINED; 22:00:29 1374 22:00:29 1375 function TO_TIME (RIGHT varchar2 character set any_cs) return 22:00:29 1376 time_unconstrained; 22:00:29 1377 pragma BUILTIN('TO_TIME', 0, 15, 1); 22:00:29 1378 function TO_TIMESTAMP (RIGHT varchar2 character set any_cs) 22:00:29 1379 return TIMESTAMP_UNCONSTRAINED; 22:00:29 1380 pragma BUILTIN('TO_TIMESTAMP', 0, 15, 3); 22:00:29 1381 function TO_TIME_TZ (RIGHT varchar2 character set any_cs) 22:00:29 1382 return TIME_TZ_UNCONSTRAINED; 22:00:29 1383 pragma BUILTIN('TO_TIME_TZ', 0, 15, 5); 22:00:29 1384 function TO_TIMESTAMP_TZ (RIGHT varchar2 character set any_cs) 22:00:29 1385 return TIMESTAMP_TZ_UNCONSTRAINED; 22:00:29 1386 pragma BUILTIN('TO_TIMESTAMP_TZ', 0, 15, 7); 22:00:29 1387 function TO_YMINTERVAL (RIGHT varchar2 character set any_cs) 22:00:29 1388 return YMINTERVAL_UNCONSTRAINED; 22:00:29 1389 pragma BUILTIN('TO_YMINTERVAL', 0, 15, 9); 22:00:29 1390 function TO_DSINTERVAL (RIGHT varchar2 character set any_cs) 22:00:29 1391 return DSINTERVAL_UNCONSTRAINED; 22:00:29 1392 pragma BUILTIN('TO_DSINTERVAL', 0, 15, 11); 22:00:29 1393 22:00:29 1394 -- with nls args 22:00:29 1395 function TO_TIME(left varchar2 character set any_cs, 22:00:29 1396 format varchar2 character set left%charset, 22:00:29 1397 parms varchar2 character set left%charset) 22:00:29 1398 return TIME_UNCONSTRAINED; 22:00:29 1399 function TO_TIME(left varchar2 character set any_cs, 22:00:29 1400 format varchar2 character set left%charset) 22:00:29 1401 return TIME_UNCONSTRAINED; 22:00:29 1402 function TO_TIMESTAMP(left varchar2 character set any_cs, 22:00:29 1403 format varchar2 character set left%charset, 22:00:29 1404 parms varchar2 character set left%charset) 22:00:29 1405 return TIMESTAMP_UNCONSTRAINED; 22:00:29 1406 function TO_TIMESTAMP(left varchar2 character set any_cs, 22:00:29 1407 format varchar2 character set left%charset) 22:00:29 1408 return TIMESTAMP_UNCONSTRAINED; 22:00:29 1409 function TO_TIMESTAMP_TZ(left varchar2 character set any_cs, 22:00:29 1410 format varchar2 character set left%charset, 22:00:29 1411 parms varchar2 character set left%charset) 22:00:29 1412 return TIMESTAMP_TZ_UNCONSTRAINED; 22:00:29 1413 function TO_TIMESTAMP_TZ(left varchar2 character set any_cs, 22:00:29 1414 format varchar2 character set left%charset) 22:00:29 1415 return TIMESTAMP_TZ_UNCONSTRAINED; 22:00:29 1416 function TO_TIME_TZ(left varchar2 character set any_cs, 22:00:29 1417 format varchar2 character set left%charset, 22:00:29 1418 parms varchar2 character set left%charset) 22:00:29 1419 return TIME_TZ_UNCONSTRAINED; 22:00:29 1420 function TO_TIME_TZ(left varchar2 character set any_cs, 22:00:29 1421 format varchar2 character set left%charset) 22:00:29 1422 return TIME_TZ_UNCONSTRAINED; 22:00:29 1423 function TO_DSINTERVAL(RIGHT varchar2 character set any_cs, 22:00:29 1424 parms varchar2 character set RIGHT%charset) 22:00:29 1425 return DSINTERVAL_UNCONSTRAINED; 22:00:29 1426 22:00:29 1427 function NUMTOYMINTERVAL(numerator number, 22:00:29 1428 units varchar2 character set any_cs) 22:00:29 1429 return YMINTERVAL_UNCONSTRAINED; 22:00:29 1430 function NUMTODSINTERVAL(numerator number, 22:00:29 1431 units varchar2 character set any_cs) 22:00:29 1432 return DSINTERVAL_UNCONSTRAINED; 22:00:29 1433 22:00:29 1434 function '=' (LEFT UROWID, RIGHT UROWID) return BOOLEAN; 22:00:29 1435 pragma BUILTIN('=',0, 11, 1); 22:00:29 1436 pragma FIPSFLAG('=', 1450); 22:00:29 1437 function '!=' (LEFT UROWID, RIGHT UROWID) return BOOLEAN; -- also <> and ~= 22:00:29 1438 pragma BUILTIN('!=',0, 11, 2); 22:00:29 1439 pragma FIPSFLAG('!=', 1450); 22:00:29 1440 function '<' (LEFT UROWID, RIGHT UROWID) return BOOLEAN; 22:00:29 1441 pragma BUILTIN('<',0, 11, 3); 22:00:29 1442 pragma FIPSFLAG('<', 1450); 22:00:29 1443 function '<=' (LEFT UROWID, RIGHT UROWID) return BOOLEAN; 22:00:29 1444 pragma BUILTIN('<=',0, 11, 4); 22:00:29 1445 pragma FIPSFLAG('<=', 1450); 22:00:29 1446 function '>' (LEFT UROWID, RIGHT UROWID) return BOOLEAN; 22:00:29 1447 pragma BUILTIN('>',0, 11, 5); 22:00:29 1448 pragma FIPSFLAG('>', 1450); 22:00:29 1449 function '>=' (LEFT UROWID, RIGHT UROWID) return BOOLEAN; 22:00:29 1450 pragma BUILTIN('>=',0, 11, 6); 22:00:29 1451 pragma FIPSFLAG('>=', 1450); 22:00:29 1452 22:00:29 1453 function 'IS NULL' (u UROWID) return BOOLEAN; 22:00:29 1454 pragma BUILTIN('IS NULL', 0, 14, 0); -- PEMS_UROWID, PEMDNUL 22:00:29 1455 pragma FIPSFLAG('IS NULL', 1450); 22:00:29 1456 function 'IS NOT NULL' (u UROWID) return BOOLEAN; 22:00:29 1457 pragma BUILTIN('IS NOT NULL', 0, 14, 50); -- PEMS_UROWID, PEMDNUL 22:00:29 1458 pragma FIPSFLAG('IS NOT NULL', 1450); 22:00:29 1459 22:00:29 1460 function "UROWID " return UROWID; 22:00:29 1461 pragma builtin('UROWID ', 1, 209, 240); -- this had better never be called. 22:00:29 1462 22:00:29 1463 -- New built-in function SYS_GUID, returns globally unique id 22:00:29 1464 function SYS_GUID return RAW; 22:00:29 1465 22:00:29 1466 -- New built-in function SYS_CONTEXT 22:00:29 1467 function SYS_CONTEXT (namespace varchar2, attribute varchar2) 22:00:29 1468 return varchar2; 22:00:29 1469 22:00:29 1470 function TRIM(v VARCHAR2 CHARACTER SET ANY_CS) 22:00:29 1471 return VARCHAR2 CHARACTER SET v%CHARSET; 22:00:29 1472 22:00:29 1473 --#### This is the end of 8.1.5 Standard 22:00:29 1474 22:00:29 1475 -- SYS_CONTEXT now has an additional optional parameter 22:00:29 1476 function SYS_CONTEXT(namespace varchar2, attribute varchar2, 22:00:29 1477 newoptional varchar2) 22:00:29 1478 return varchar2; 22:00:29 1479 22:00:29 1480 -- CUBE and ROLLUP are not real functions; they are variants on the GROUP 22:00:29 1481 -- BY clause (GROUP BY CUBE (...) and GROUP BY ROLLUP (...)). They have 22:00:29 1482 -- been added here as functions to avoid name capture issues. 22:00:29 1483 -- 22:00:29 1484 -- Note that both CUBE and ROLLUP look like true vararg functions with 22:00:29 1485 -- *no* repeating pattern of formals - hence they are special cased in 22:00:29 1486 -- the overloading code. 22:00:29 1487 function CUBE return NUMBER; 22:00:29 1488 function ROLLUP return NUMBER; 22:00:29 1489 22:00:29 1490 -- The GROUPING function must be used in conjunction with CUBE and ROLLUP 22:00:29 1491 -- in the GROUP BY clause. The type of the parameter to GROUPING can be 22:00:29 1492 -- any type that can appear in a GROUP BY list. 22:00:29 1493 function GROUPING(v VARCHAR2) return NUMBER; 22:00:29 1494 function GROUPING(a "") return NUMBER; 22:00:29 1495 22:00:29 1496 -- This is for TRIM(x). No trim set. 22:00:29 1497 function " SYS$STANDARD_TRIM" (v VARCHAR2 CHARACTER SET ANY_CS) 22:00:29 1498 return VARCHAR2 CHARACTER SET v%CHARSET; 22:00:29 1499 22:00:29 1500 -- This is for TRIM(LEADING/TRAILING FROM x). No trim set. 22:00:29 1501 function " SYS$STANDARD_TRIM" (STR1 VARCHAR2 CHARACTER SET ANY_CS , 22:00:29 1502 TRFLAG PLS_INTEGER) 22:00:29 1503 return VARCHAR2 CHARACTER SET STR1%CHARSET; 22:00:29 1504 22:00:29 1505 -- General TRIM. LEADING, TRAILING and BOTH options as 3rd argument. 22:00:29 1506 -- This one takes a trim set. 22:00:29 1507 function " SYS$STANDARD_TRIM" (STR1 VARCHAR2 CHARACTER SET ANY_CS , 22:00:29 1508 TSET VARCHAR2 CHARACTER SET STR1%CHARSET, 22:00:29 1509 TRFLAG PLS_INTEGER) 22:00:29 1510 return VARCHAR2 CHARACTER SET STR1%CHARSET; 22:00:29 1511 22:00:29 1512 --#### This is the end of the supported parts of 8.1.6 Standard 22:00:29 1513 22:00:29 1514 --## Support for ANSI datetime data types is under development. 22:00:29 1515 --## The following operations, as well as the related types and 22:00:29 1516 --## operations defined above in the 8.1.5 section, are not yet 22:00:29 1517 --## available for use and are still subject to change. 22:00:29 1518 22:00:29 1519 --- datetime equivalence 22:00:29 1520 function '=' (LEFT TIME_UNCONSTRAINED, 22:00:29 1521 RIGHT TIME_UNCONSTRAINED) return BOOLEAN; 22:00:29 1522 function '!=' (LEFT TIME_UNCONSTRAINED, 22:00:29 1523 RIGHT TIME_UNCONSTRAINED) return BOOLEAN; 22:00:29 1524 function '<' (LEFT TIME_UNCONSTRAINED, 22:00:29 1525 RIGHT TIME_UNCONSTRAINED) return BOOLEAN; 22:00:29 1526 function '<=' (LEFT TIME_UNCONSTRAINED, 22:00:29 1527 RIGHT TIME_UNCONSTRAINED) return BOOLEAN; 22:00:29 1528 function '>' (LEFT TIME_UNCONSTRAINED, 22:00:29 1529 RIGHT TIME_UNCONSTRAINED) return BOOLEAN; 22:00:29 1530 function '>=' (LEFT TIME_UNCONSTRAINED, 22:00:29 1531 RIGHT TIME_UNCONSTRAINED) return BOOLEAN; 22:00:29 1532 22:00:29 1533 function '=' (LEFT TIMESTAMP_UNCONSTRAINED, 22:00:29 1534 RIGHT TIMESTAMP_UNCONSTRAINED) return BOOLEAN; 22:00:29 1535 function '!=' (LEFT TIMESTAMP_UNCONSTRAINED, 22:00:29 1536 RIGHT TIMESTAMP_UNCONSTRAINED) return BOOLEAN; 22:00:29 1537 function '<' (LEFT TIMESTAMP_UNCONSTRAINED, 22:00:29 1538 RIGHT TIMESTAMP_UNCONSTRAINED) return BOOLEAN; 22:00:29 1539 function '<=' (LEFT TIMESTAMP_UNCONSTRAINED, 22:00:29 1540 RIGHT TIMESTAMP_UNCONSTRAINED) return BOOLEAN; 22:00:29 1541 function '>' (LEFT TIMESTAMP_UNCONSTRAINED, 22:00:29 1542 RIGHT TIMESTAMP_UNCONSTRAINED) return BOOLEAN; 22:00:29 1543 function '>=' (LEFT TIMESTAMP_UNCONSTRAINED, 22:00:29 1544 RIGHT TIMESTAMP_UNCONSTRAINED) return BOOLEAN; 22:00:29 1545 22:00:29 1546 function '=' (LEFT TIME_TZ_UNCONSTRAINED, 22:00:29 1547 RIGHT TIME_TZ_UNCONSTRAINED) return BOOLEAN; 22:00:29 1548 function '!=' (LEFT TIME_TZ_UNCONSTRAINED, 22:00:29 1549 RIGHT TIME_TZ_UNCONSTRAINED) return BOOLEAN; 22:00:29 1550 function '<' (LEFT TIME_TZ_UNCONSTRAINED, 22:00:29 1551 RIGHT TIME_TZ_UNCONSTRAINED) return BOOLEAN; 22:00:29 1552 function '<=' (LEFT TIME_TZ_UNCONSTRAINED, 22:00:29 1553 RIGHT TIME_TZ_UNCONSTRAINED) return BOOLEAN; 22:00:29 1554 function '>' (LEFT TIME_TZ_UNCONSTRAINED, 22:00:29 1555 RIGHT TIME_TZ_UNCONSTRAINED) return BOOLEAN; 22:00:29 1556 function '>=' (LEFT TIME_TZ_UNCONSTRAINED, 22:00:29 1557 RIGHT TIME_TZ_UNCONSTRAINED) return BOOLEAN; 22:00:29 1558 22:00:29 1559 function '=' (LEFT YMINTERVAL_UNCONSTRAINED, 22:00:29 1560 RIGHT YMINTERVAL_UNCONSTRAINED) return BOOLEAN; 22:00:29 1561 function '!=' (LEFT YMINTERVAL_UNCONSTRAINED, 22:00:29 1562 RIGHT YMINTERVAL_UNCONSTRAINED) return BOOLEAN; 22:00:29 1563 function '<' (LEFT YMINTERVAL_UNCONSTRAINED, 22:00:29 1564 RIGHT YMINTERVAL_UNCONSTRAINED) return BOOLEAN; 22:00:29 1565 function '<=' (LEFT YMINTERVAL_UNCONSTRAINED, 22:00:29 1566 RIGHT YMINTERVAL_UNCONSTRAINED) return BOOLEAN; 22:00:29 1567 function '>' (LEFT YMINTERVAL_UNCONSTRAINED, 22:00:29 1568 RIGHT YMINTERVAL_UNCONSTRAINED) return BOOLEAN; 22:00:29 1569 function '>=' (LEFT YMINTERVAL_UNCONSTRAINED, 22:00:29 1570 RIGHT YMINTERVAL_UNCONSTRAINED) return BOOLEAN; 22:00:29 1571 22:00:29 1572 function '=' (LEFT DSINTERVAL_UNCONSTRAINED, 22:00:29 1573 RIGHT DSINTERVAL_UNCONSTRAINED) return BOOLEAN; 22:00:29 1574 function '!=' (LEFT DSINTERVAL_UNCONSTRAINED, 22:00:29 1575 RIGHT DSINTERVAL_UNCONSTRAINED) return BOOLEAN; 22:00:29 1576 function '<' (LEFT DSINTERVAL_UNCONSTRAINED, 22:00:29 1577 RIGHT DSINTERVAL_UNCONSTRAINED) return BOOLEAN; 22:00:29 1578 function '<=' (LEFT DSINTERVAL_UNCONSTRAINED, 22:00:29 1579 RIGHT DSINTERVAL_UNCONSTRAINED) return BOOLEAN; 22:00:29 1580 function '>' (LEFT DSINTERVAL_UNCONSTRAINED, 22:00:29 1581 RIGHT DSINTERVAL_UNCONSTRAINED) return BOOLEAN; 22:00:29 1582 function '>=' (LEFT DSINTERVAL_UNCONSTRAINED, 22:00:29 1583 RIGHT DSINTERVAL_UNCONSTRAINED) return BOOLEAN; 22:00:29 1584 22:00:29 1585 function TO_TIME (RIGHT TIME_TZ_UNCONSTRAINED) return TIME_UNCONSTRAINED; 22:00:29 1586 pragma BUILTIN('TO_TIME', 0, 15, 13); 22:00:29 1587 function TO_TIME_TZ (RIGHT TIME_UNCONSTRAINED) return TIME_TZ_UNCONSTRAINED; 22:00:29 1588 pragma BUILTIN('TO_TIME_TZ', 0, 15, 14); 22:00:29 1589 function TO_TIMESTAMP (RIGHT TIMESTAMP_TZ_UNCONSTRAINED) 22:00:29 1590 return TIMESTAMP_UNCONSTRAINED; 22:00:29 1591 pragma BUILTIN('TO_TIMESTAMP', 0, 15, 15); 22:00:29 1592 function TO_TIMESTAMP_TZ (RIGHT TIMESTAMP_UNCONSTRAINED) 22:00:29 1593 return TIMESTAMP_TZ_UNCONSTRAINED; 22:00:29 1594 pragma BUILTIN('TO_TIMESTAMP_TZ', 0, 15, 16); 22:00:29 1595 22:00:29 1596 function '-' 22:00:29 1597 (LEFT TIME_UNCONSTRAINED, RIGHT TIME_UNCONSTRAINED) 22:00:29 1598 return DSINTERVAL_UNCONSTRAINED; 22:00:29 1599 function '-' 22:00:29 1600 (LEFT TIMESTAMP_UNCONSTRAINED, RIGHT TIMESTAMP_UNCONSTRAINED) 22:00:29 1601 return DSINTERVAL_UNCONSTRAINED; 22:00:29 1602 function '-' 22:00:29 1603 (LEFT TIME_TZ_UNCONSTRAINED, RIGHT TIME_TZ_UNCONSTRAINED) 22:00:29 1604 return DSINTERVAL_UNCONSTRAINED; 22:00:29 1605 function '-' 22:00:29 1606 (LEFT TIMESTAMP_TZ_UNCONSTRAINED, RIGHT TIMESTAMP_TZ_UNCONSTRAINED) 22:00:29 1607 return DSINTERVAL_UNCONSTRAINED; 22:00:29 1608 22:00:29 1609 -- timezone functions 22:00:29 1610 function SYS_AT_TIME_ZONE(t time_tz_unconstrained, 22:00:29 1611 i varchar2) RETURN time_tz_unconstrained; 22:00:29 1612 function SYS_AT_TIME_ZONE(t timestamp_tz_unconstrained, 22:00:29 1613 i varchar2) RETURN timestamp_tz_unconstrained; 22:00:29 1614 FUNCTION systimestamp RETURN timestamp_tz_unconstrained; 22:00:29 1615 FUNCTION dbtimezone RETURN varchar2; 22:00:29 1616 FUNCTION sessiontimezone RETURN varchar2; 22:00:29 1617 FUNCTION localtimestamp RETURN timestamp_unconstrained; 22:00:29 1618 FUNCTION localtime RETURN time_unconstrained; 22:00:29 1619 22:00:29 1620 function TO_TIMESTAMP (RIGHT DATE) return TIMESTAMP_UNCONSTRAINED; 22:00:29 1621 pragma BUILTIN('TO_TIMESTAMP', 0, 15, 17); 22:00:29 1622 22:00:29 1623 function '+'(LEFT TIMESTAMP_LTZ_UNCONSTRAINED, 22:00:29 1624 RIGHT yminterval_unconstrained) 22:00:29 1625 return TIMESTAMP_LTZ_UNCONSTRAINED; 22:00:29 1626 function '+'(LEFT TIMESTAMP_LTZ_UNCONSTRAINED, 22:00:29 1627 RIGHT dsinterval_unconstrained) 22:00:29 1628 return TIMESTAMP_LTZ_UNCONSTRAINED; 22:00:29 1629 function '+'(LEFT yminterval_unconstrained, 22:00:29 1630 RIGHT TIMESTAMP_LTZ_UNCONSTRAINED) 22:00:29 1631 return TIMESTAMP_LTZ_UNCONSTRAINED ; 22:00:29 1632 function '+'(LEFT dsinterval_unconstrained, 22:00:29 1633 RIGHT TIMESTAMP_LTZ_UNCONSTRAINED) 22:00:29 1634 return TIMESTAMP_LTZ_UNCONSTRAINED ; 22:00:29 1635 22:00:29 1636 function '-'(LEFT TIMESTAMP_LTZ_UNCONSTRAINED, 22:00:29 1637 RIGHT yminterval_unconstrained) 22:00:29 1638 return TIMESTAMP_LTZ_UNCONSTRAINED ; 22:00:29 1639 function '-'(LEFT TIMESTAMP_LTZ_UNCONSTRAINED, 22:00:29 1640 RIGHT dsinterval_unconstrained) 22:00:29 1641 return TIMESTAMP_LTZ_UNCONSTRAINED ; 22:00:29 1642 22:00:29 1643 function " SYS$DSINTERVALSUBTRACT"(LEFT TIMESTAMP_LTZ_UNCONSTRAINED, 22:00:29 1644 RIGHT TIMESTAMP_LTZ_UNCONSTRAINED) 22:00:29 1645 return dsinterval_unconstrained; 22:00:29 1646 function " SYS$YMINTERVALSUBTRACT"(LEFT TIMESTAMP_LTZ_UNCONSTRAINED, 22:00:29 1647 RIGHT TIMESTAMP_LTZ_UNCONSTRAINED) 22:00:29 1648 return yminterval_unconstrained; 22:00:29 1649 22:00:29 1650 function '-'(LEFT TIMESTAMP_LTZ_UNCONSTRAINED, 22:00:29 1651 RIGHT TIMESTAMP_LTZ_UNCONSTRAINED) 22:00:29 1652 return dsinterval_unconstrained; 22:00:29 1653 22:00:29 1654 function '=' (LEFT TIMESTAMP_TZ_UNCONSTRAINED, 22:00:29 1655 RIGHT TIMESTAMP_TZ_UNCONSTRAINED) return BOOLEAN; 22:00:29 1656 function '!=' (LEFT TIMESTAMP_TZ_UNCONSTRAINED, 22:00:29 1657 RIGHT TIMESTAMP_TZ_UNCONSTRAINED) return BOOLEAN; 22:00:29 1658 function '<' (LEFT TIMESTAMP_TZ_UNCONSTRAINED, 22:00:29 1659 RIGHT TIMESTAMP_TZ_UNCONSTRAINED) return BOOLEAN; 22:00:29 1660 function '<=' (LEFT TIMESTAMP_TZ_UNCONSTRAINED, 22:00:29 1661 RIGHT TIMESTAMP_TZ_UNCONSTRAINED) return BOOLEAN; 22:00:29 1662 function '>' (LEFT TIMESTAMP_TZ_UNCONSTRAINED, 22:00:29 1663 RIGHT TIMESTAMP_TZ_UNCONSTRAINED) return BOOLEAN; 22:00:29 1664 function '>=' (LEFT TIMESTAMP_TZ_UNCONSTRAINED, 22:00:29 1665 RIGHT TIMESTAMP_TZ_UNCONSTRAINED) return BOOLEAN; 22:00:29 1666 22:00:29 1667 function '=' (LEFT TIMESTAMP_LTZ_UNCONSTRAINED, 22:00:29 1668 RIGHT TIMESTAMP_LTZ_UNCONSTRAINED) return BOOLEAN; 22:00:29 1669 function '!=' (LEFT TIMESTAMP_LTZ_UNCONSTRAINED, 22:00:29 1670 RIGHT TIMESTAMP_LTZ_UNCONSTRAINED) return BOOLEAN; 22:00:29 1671 function '<' (LEFT TIMESTAMP_LTZ_UNCONSTRAINED, 22:00:29 1672 RIGHT TIMESTAMP_LTZ_UNCONSTRAINED) return BOOLEAN; 22:00:29 1673 function '<=' (LEFT TIMESTAMP_LTZ_UNCONSTRAINED, 22:00:29 1674 RIGHT TIMESTAMP_LTZ_UNCONSTRAINED) return BOOLEAN; 22:00:29 1675 function '>' (LEFT TIMESTAMP_LTZ_UNCONSTRAINED, 22:00:29 1676 RIGHT TIMESTAMP_LTZ_UNCONSTRAINED) return BOOLEAN; 22:00:29 1677 function '>=' (LEFT TIMESTAMP_LTZ_UNCONSTRAINED, 22:00:29 1678 RIGHT TIMESTAMP_LTZ_UNCONSTRAINED) return BOOLEAN; 22:00:29 1679 22:00:29 1680 function SYS_LITERALTOYMINTERVAL(numerator varchar2, units varchar2) 22:00:29 1681 return YMINTERVAL_UNCONSTRAINED; 22:00:29 1682 function SYS_LITERALTODSINTERVAL(numerator varchar2, units varchar2) 22:00:29 1683 return DSINTERVAL_UNCONSTRAINED; 22:00:29 1684 function SYS_LITERALTOTIME(numerator varchar2) 22:00:29 1685 return TIME_UNCONSTRAINED; 22:00:29 1686 function SYS_LITERALTOTZTIME(numerator varchar2) 22:00:29 1687 return TIME_TZ_UNCONSTRAINED; 22:00:29 1688 function SYS_LITERALTOTIMESTAMP(numerator varchar2) 22:00:29 1689 return TIMESTAMP_UNCONSTRAINED; 22:00:29 1690 function SYS_LITERALTOTZTIMESTAMP(numerator varchar2) 22:00:29 1691 return TIMESTAMP_TZ_UNCONSTRAINED; 22:00:29 1692 function SYS_LITERALTODATE(numerator varchar2) return DATE; 22:00:29 1693 22:00:29 1694 22:00:29 1695 -- Explicit conversions between date and datetime 22:00:29 1696 function TO_TIMESTAMP(ARG TIMESTAMP_LTZ_UNCONSTRAINED) 22:00:29 1697 return TIMESTAMP_UNCONSTRAINED; 22:00:29 1698 pragma BUILTIN('TO_TIMESTAMP', 0, 15, 24); 22:00:29 1699 22:00:29 1700 function TO_TIMESTAMP_TZ(ARG DATE) return TIMESTAMP_TZ_UNCONSTRAINED; 22:00:29 1701 pragma BUILTIN('TO_TIMESTAMP_TZ', 0, 15, 27); 22:00:29 1702 22:00:29 1703 function TO_TIMESTAMP_TZ(ARG TIMESTAMP_LTZ_UNCONSTRAINED) 22:00:29 1704 return TIMESTAMP_TZ_UNCONSTRAINED; 22:00:29 1705 pragma BUILTIN('TO_TIMESTAMP_TZ', 0, 15, 26); 22:00:29 1706 22:00:29 1707 -- IS [NOT] NULL / NVL for datetime 22:00:29 1708 function 'IS NULL' (b TIME_UNCONSTRAINED) return BOOLEAN; 22:00:29 1709 function 'IS NOT NULL' (b TIME_UNCONSTRAINED) return BOOLEAN; 22:00:29 1710 function NVL (b1 TIME_UNCONSTRAINED, 22:00:29 1711 b2 TIME_UNCONSTRAINED) return TIME_UNCONSTRAINED; 22:00:29 1712 22:00:29 1713 function 'IS NULL' (b TIME_TZ_UNCONSTRAINED) return BOOLEAN; 22:00:29 1714 function 'IS NOT NULL' (b TIME_TZ_UNCONSTRAINED) return BOOLEAN; 22:00:29 1715 function NVL (b1 TIME_TZ_UNCONSTRAINED, b2 TIME_TZ_UNCONSTRAINED) 22:00:29 1716 return TIME_TZ_UNCONSTRAINED; 22:00:29 1717 22:00:29 1718 function 'IS NULL' (b TIMESTAMP_UNCONSTRAINED) return BOOLEAN; 22:00:29 1719 function 'IS NOT NULL' (b TIMESTAMP_UNCONSTRAINED) return BOOLEAN; 22:00:29 1720 function NVL (b1 TIMESTAMP_UNCONSTRAINED, 22:00:29 1721 b2 TIMESTAMP_UNCONSTRAINED) return TIMESTAMP_UNCONSTRAINED; 22:00:29 1722 22:00:29 1723 function 'IS NULL' (b TIMESTAMP_TZ_UNCONSTRAINED) return BOOLEAN; 22:00:29 1724 function 'IS NOT NULL' (b TIMESTAMP_TZ_UNCONSTRAINED) return BOOLEAN; 22:00:29 1725 function NVL (b1 TIMESTAMP_TZ_UNCONSTRAINED, b2 TIMESTAMP_TZ_UNCONSTRAINED) 22:00:29 1726 return TIMESTAMP_TZ_UNCONSTRAINED; 22:00:29 1727 22:00:29 1728 function 'IS NULL' (b TIMESTAMP_LTZ_UNCONSTRAINED) return BOOLEAN; 22:00:29 1729 function 'IS NOT NULL' (b TIMESTAMP_LTZ_UNCONSTRAINED) return BOOLEAN; 22:00:29 1730 function NVL (b1 TIMESTAMP_LTZ_UNCONSTRAINED, 22:00:29 1731 b2 TIMESTAMP_LTZ_UNCONSTRAINED) 22:00:29 1732 return TIMESTAMP_LTZ_UNCONSTRAINED; 22:00:29 1733 22:00:29 1734 function 'IS NULL' (b YMINTERVAL_UNCONSTRAINED) return BOOLEAN; 22:00:29 1735 function 'IS NOT NULL' (b YMINTERVAL_UNCONSTRAINED) return BOOLEAN; 22:00:29 1736 function NVL (b1 YMINTERVAL_UNCONSTRAINED, b2 YMINTERVAL_UNCONSTRAINED) 22:00:29 1737 return YMINTERVAL_UNCONSTRAINED; 22:00:29 1738 22:00:29 1739 function 'IS NULL' (b DSINTERVAL_UNCONSTRAINED) return BOOLEAN; 22:00:29 1740 function 'IS NOT NULL' (b DSINTERVAL_UNCONSTRAINED) return BOOLEAN; 22:00:29 1741 function NVL (b1 DSINTERVAL_UNCONSTRAINED, b2 DSINTERVAL_UNCONSTRAINED) 22:00:29 1742 return DSINTERVAL_UNCONSTRAINED; 22:00:29 1743 22:00:29 1744 function " SYS$EXTRACT_FROM" 22:00:29 1745 (T TIME_UNCONSTRAINED,FIELD VARCHAR2) return NUMBER; 22:00:29 1746 function " SYS$EXTRACT_FROM" 22:00:29 1747 (T TIME_TZ_UNCONSTRAINED,FIELD varchar2) return NUMBER; 22:00:29 1748 function " SYS$EXTRACT_FROM" 22:00:29 1749 (T TIMESTAMP_UNCONSTRAINED,FIELD VARCHAR2) return NUMBER; 22:00:29 1750 function " SYS$EXTRACT_FROM" 22:00:29 1751 (T TIMESTAMP_TZ_UNCONSTRAINED,FIELD VARCHAR2) return NUMBER; 22:00:29 1752 function " SYS$EXTRACT_FROM" 22:00:29 1753 (T TIMESTAMP_LTZ_UNCONSTRAINED,FIELD varchar2) return NUMBER; 22:00:29 1754 function " SYS$EXTRACT_FROM" 22:00:29 1755 (T DATE,FIELD VARCHAR2) return NUMBER; 22:00:29 1756 function " SYS$EXTRACT_FROM" 22:00:29 1757 (I YMINTERVAL_UNCONSTRAINED,FIELD VARCHAR2) return NUMBER; 22:00:29 1758 function " SYS$EXTRACT_FROM" 22:00:29 1759 (I DSINTERVAL_UNCONSTRAINED,FIELD VARCHAR2) return NUMBER; 22:00:29 1760 22:00:29 1761 -- ########## 8.2 LOB Built-in Functions ######## -- 22:00:29 1762 22:00:29 1763 -- LENGTH -- 22:00:29 1764 function LENGTH(ch CLOB CHARACTER SET ANY_CS) return integer; 22:00:29 1765 pragma FIPSFLAG('LENGTH', 1452); 22:00:29 1766 22:00:29 1767 function LENGTHB(ch CLOB CHARACTER SET ANY_CS) return integer; 22:00:29 1768 pragma FIPSFLAG('LENGTHB', 1452); 22:00:29 1769 22:00:29 1770 function LENGTH(bl BLOB) return integer; 22:00:29 1771 pragma FIPSFLAG('LENGTH', 1452); 22:00:29 1772 22:00:29 1773 function LENGTHB(bl BLOB) return integer; 22:00:29 1774 pragma FIPSFLAG('LENGTHB', 1452); 22:00:29 1775 22:00:29 1776 -- SUBSTR -- 22:00:29 1777 function SUBSTR(STR1 CLOB CHARACTER SET ANY_CS, 22:00:29 1778 POS INTEGER, 22:00:29 1779 LEN INTEGER := 18446744073709551615) 22:00:29 1780 return CLOB CHARACTER SET STR1%CHARSET; 22:00:29 1781 pragma FIPSFLAG('SUBSTR', 1452); 22:00:29 1782 22:00:29 1783 function SUBSTRB(STR1 CLOB CHARACTER SET ANY_CS, 22:00:29 1784 POS INTEGER, 22:00:29 1785 LEN INTEGER := 18446744073709551615) 22:00:29 1786 return CLOB CHARACTER SET STR1%CHARSET; 22:00:29 1787 pragma FIPSFLAG('SUBSTRB', 1452); 22:00:29 1788 22:00:29 1789 -- INSTR -- 22:00:29 1790 function INSTR(STR1 CLOB CHARACTER SET ANY_CS, 22:00:29 1791 STR2 CLOB CHARACTER SET STR1%CHARSET, 22:00:29 1792 POS INTEGER := 1, 22:00:29 1793 NTH INTEGER := 1) return INTEGER; 22:00:29 1794 pragma FIPSFLAG('INSTR', 1452); 22:00:29 1795 22:00:29 1796 function INSTRB(STR1 CLOB CHARACTER SET ANY_CS, 22:00:29 1797 STR2 CLOB CHARACTER SET STR1%CHARSET, 22:00:29 1798 POS INTEGER := 1, 22:00:29 1799 NTH INTEGER := 1) return INTEGER; 22:00:29 1800 pragma FIPSFLAG('INSTRB', 1452); 22:00:29 1801 22:00:29 1802 -- CONCAT -- 22:00:29 1803 function '||' (LEFT CLOB CHARACTER SET ANY_CS, 22:00:29 1804 RIGHT CLOB CHARACTER SET ANY_CS) 22:00:29 1805 return CLOB CHARACTER SET LEFT%CHARSET; 22:00:29 1806 pragma FIPSFLAG('||', 1454); 22:00:29 1807 22:00:29 1808 function CONCAT(LEFT CLOB CHARACTER SET ANY_CS, 22:00:29 1809 RIGHT CLOB CHARACTER SET ANY_CS) 22:00:29 1810 return CLOB CHARACTER SET LEFT%CHARSET; 22:00:29 1811 pragma FIPSFLAG(CONCAT, 1454); 22:00:29 1812 22:00:29 1813 -- UPPER -- 22:00:29 1814 function UPPER(ch CLOB CHARACTER SET ANY_CS) 22:00:29 1815 return CLOB CHARACTER SET ch%CHARSET; 22:00:29 1816 pragma FIPSFLAG('UPPER', 1452); 22:00:29 1817 22:00:29 1818 -- LOWER -- 22:00:29 1819 function LOWER(ch CLOB CHARACTER SET ANY_CS) 22:00:29 1820 return CLOB CHARACTER SET ch%CHARSET; 22:00:29 1821 pragma FIPSFLAG('LOWER', 1452); 22:00:29 1822 22:00:29 1823 -- LPAD -- 22:00:29 1824 function LPAD(STR1 CLOB CHARACTER SET ANY_CS, 22:00:29 1825 LEN integer, 22:00:29 1826 PAD CLOB CHARACTER SET STR1%CHARSET) 22:00:29 1827 return CLOB CHARACTER SET STR1%CHARSET; 22:00:29 1828 pragma FIPSFLAG('LPAD', 1452); 22:00:29 1829 22:00:29 1830 function LPAD(STR1 CLOB CHARACTER SET ANY_CS, 22:00:29 1831 LEN integer) 22:00:29 1832 return CLOB CHARACTER SET STR1%CHARSET; 22:00:29 1833 pragma FIPSFLAG('LPAD', 1452); 22:00:29 1834 22:00:29 1835 -- RPAD -- 22:00:29 1836 function RPAD(STR1 CLOB CHARACTER SET ANY_CS, 22:00:29 1837 LEN integer, 22:00:29 1838 PAD CLOB CHARACTER SET STR1%CHARSET) 22:00:29 1839 return CLOB CHARACTER SET STR1%CHARSET; 22:00:29 1840 pragma FIPSFLAG('RPAD', 1452); 22:00:29 1841 22:00:29 1842 function RPAD(STR1 CLOB CHARACTER SET ANY_CS, 22:00:29 1843 LEN integer) 22:00:29 1844 return CLOB CHARACTER SET STR1%CHARSET; 22:00:29 1845 pragma FIPSFLAG('RPAD', 1452); 22:00:29 1846 22:00:29 1847 -- LTRIM -- 22:00:29 1848 function LTRIM(STR1 CLOB CHARACTER SET ANY_CS, 22:00:29 1849 TSET CLOB CHARACTER SET STR1%CHARSET) 22:00:29 1850 return CLOB CHARACTER SET STR1%CHARSET; 22:00:29 1851 pragma FIPSFLAG('LTRIM', 1452); 22:00:29 1852 22:00:29 1853 function LTRIM(STR1 CLOB CHARACTER SET ANY_CS) 22:00:29 1854 return CLOB CHARACTER SET STR1%CHARSET; 22:00:29 1855 pragma FIPSFLAG('LTRIM', 1452); 22:00:29 1856 22:00:29 1857 -- RTRIM -- 22:00:29 1858 function RTRIM(STR1 CLOB CHARACTER SET ANY_CS, 22:00:29 1859 TSET CLOB CHARACTER SET STR1%CHARSET) 22:00:29 1860 return CLOB CHARACTER SET STR1%CHARSET; 22:00:29 1861 pragma FIPSFLAG('RTRIM', 1452); 22:00:29 1862 22:00:29 1863 function RTRIM(STR1 CLOB CHARACTER SET ANY_CS) 22:00:29 1864 return CLOB CHARACTER SET STR1%CHARSET; 22:00:29 1865 pragma FIPSFLAG('RTRIM', 1452); 22:00:29 1866 22:00:29 1867 -- TRIM -- 22:00:29 1868 function TRIM(v CLOB CHARACTER SET ANY_CS) 22:00:29 1869 return CLOB CHARACTER SET v%CHARSET; 22:00:29 1870 22:00:29 1871 -- This is for TRIM(x). No trim set. 22:00:29 1872 function " SYS$STANDARD_TRIM" (v CLOB CHARACTER SET ANY_CS) 22:00:29 1873 return CLOB CHARACTER SET v%CHARSET; 22:00:29 1874 22:00:29 1875 -- This is for TRIM(LEADING/TRAILING FROM x). No trim set. 22:00:29 1876 function " SYS$STANDARD_TRIM" (STR1 CLOB CHARACTER SET ANY_CS , 22:00:29 1877 TRFLAG PLS_INTEGER) 22:00:29 1878 return CLOB CHARACTER SET STR1%CHARSET; 22:00:29 1879 22:00:29 1880 -- General TRIM. LEADING, TRAILING and BOTH options as 3rd argument. 22:00:29 1881 -- This one takes a trim set. 22:00:29 1882 function " SYS$STANDARD_TRIM" (STR1 CLOB CHARACTER SET ANY_CS , 22:00:29 1883 TSET CLOB CHARACTER SET STR1%CHARSET, 22:00:29 1884 TRFLAG PLS_INTEGER) 22:00:29 1885 return CLOB CHARACTER SET STR1%CHARSET; 22:00:29 1886 22:00:29 1887 22:00:29 1888 -- LIKE -- 22:00:29 1889 function 'LIKE' (str CLOB CHARACTER SET ANY_CS, 22:00:29 1890 pat CLOB CHARACTER SET str%CHARSET) 22:00:29 1891 return BOOLEAN; 22:00:29 1892 function 'NOT_LIKE' (str CLOB CHARACTER SET ANY_CS, 22:00:29 1893 pat CLOB CHARACTER SET str%CHARSET) 22:00:29 1894 return BOOLEAN; 22:00:29 1895 22:00:29 1896 function 'LIKE' (str CLOB CHARACTER SET ANY_CS, 22:00:29 1897 pat CLOB CHARACTER SET str%CHARSET, 22:00:29 1898 esc VARCHAR2 CHARACTER SET str%CHARSET) 22:00:29 1899 return BOOLEAN; 22:00:29 1900 function 'NOT_LIKE' (str CLOB CHARACTER SET ANY_CS, 22:00:29 1901 pat CLOB CHARACTER SET str%CHARSET, 22:00:29 1902 esc VARCHAR2 CHARACTER SET str%CHARSET) 22:00:29 1903 return BOOLEAN; 22:00:29 1904 22:00:29 1905 -- NVL -- 22:00:29 1906 function NVL(s1 CLOB CHARACTER SET ANY_CS, 22:00:29 1907 s2 CLOB CHARACTER SET s1%CHARSET) 22:00:29 1908 return CLOB CHARACTER SET s1%CHARSET; 22:00:29 1909 pragma FIPSFLAG('NVL', 1452); 22:00:29 1910 22:00:29 1911 -- REPLACE -- 22:00:29 1912 function REPLACE(SRCSTR CLOB CHARACTER SET ANY_CS, 22:00:29 1913 OLDSUB CLOB CHARACTER SET SRCSTR%CHARSET, 22:00:29 1914 NEWSUB CLOB CHARACTER SET SRCSTR%CHARSET := NULL) 22:00:29 1915 return CLOB CHARACTER SET SRCSTR%CHARSET; 22:00:29 1916 pragma FIPSFLAG('REPLACE', 1452); 22:00:29 1917 22:00:29 1918 -- LOB RELATIONAL OPERATORS -- 22:00:29 1919 22:00:29 1920 Function '=' (LEFT CLOB CHARACTER SET ANY_CS, 22:00:29 1921 RIGHT CLOB CHARACTER SET ANY_CS) return BOOLEAN; 22:00:29 1922 Function '!=' (LEFT CLOB CHARACTER SET ANY_CS, 22:00:29 1923 RIGHT CLOB CHARACTER SET ANY_CS) return BOOLEAN; 22:00:29 1924 Function '>' (LEFT CLOB CHARACTER SET ANY_CS, 22:00:29 1925 RIGHT CLOB CHARACTER SET ANY_CS) return BOOLEAN; 22:00:29 1926 Function '<' (LEFT CLOB CHARACTER SET ANY_CS, 22:00:29 1927 RIGHT CLOB CHARACTER SET ANY_CS) return BOOLEAN; 22:00:29 1928 Function '>=' (LEFT CLOB CHARACTER SET ANY_CS, 22:00:29 1929 RIGHT CLOB CHARACTER SET ANY_CS) return BOOLEAN; 22:00:29 1930 Function '<=' (LEFT CLOB CHARACTER SET ANY_CS, 22:00:29 1931 RIGHT CLOB CHARACTER SET ANY_CS) return BOOLEAN; 22:00:29 1932 22:00:29 1933 Function '=' (LEFT CLOB CHARACTER SET ANY_CS, 22:00:29 1934 RIGHT VARCHAR2 CHARACTER SET ANY_CS) return BOOLEAN; 22:00:29 1935 Function '!=' (LEFT CLOB CHARACTER SET ANY_CS, 22:00:29 1936 RIGHT VARCHAR2 CHARACTER SET ANY_CS) return BOOLEAN; 22:00:29 1937 Function '>' (LEFT CLOB CHARACTER SET ANY_CS, 22:00:29 1938 RIGHT VARCHAR2 CHARACTER SET ANY_CS) return BOOLEAN; 22:00:29 1939 Function '<' (LEFT CLOB CHARACTER SET ANY_CS, 22:00:29 1940 RIGHT VARCHAR2 CHARACTER SET ANY_CS) return BOOLEAN; 22:00:29 1941 Function '>=' (LEFT CLOB CHARACTER SET ANY_CS, 22:00:29 1942 RIGHT VARCHAR2 CHARACTER SET ANY_CS) return BOOLEAN; 22:00:29 1943 Function '<=' (LEFT CLOB CHARACTER SET ANY_CS, 22:00:29 1944 RIGHT VARCHAR2 CHARACTER SET ANY_CS) return BOOLEAN; 22:00:29 1945 22:00:29 1946 Function '=' (LEFT VARCHAR2 CHARACTER SET ANY_CS, 22:00:29 1947 RIGHT CLOB CHARACTER SET ANY_CS) return BOOLEAN; 22:00:29 1948 Function '!=' (LEFT VARCHAR2 CHARACTER SET ANY_CS, 22:00:29 1949 RIGHT CLOB CHARACTER SET ANY_CS) return BOOLEAN; 22:00:29 1950 Function '>' (LEFT VARCHAR2 CHARACTER SET ANY_CS, 22:00:29 1951 RIGHT CLOB CHARACTER SET ANY_CS) return BOOLEAN; 22:00:29 1952 Function '<' (LEFT VARCHAR2 CHARACTER SET ANY_CS, 22:00:29 1953 RIGHT CLOB CHARACTER SET ANY_CS) return BOOLEAN; 22:00:29 1954 Function '>=' (LEFT VARCHAR2 CHARACTER SET ANY_CS, 22:00:29 1955 RIGHT CLOB CHARACTER SET ANY_CS) return BOOLEAN; 22:00:29 1956 Function '<=' (LEFT VARCHAR2 CHARACTER SET ANY_CS, 22:00:29 1957 RIGHT CLOB CHARACTER SET ANY_CS) return BOOLEAN; 22:00:29 1958 22:00:29 1959 /* LOB-related conversion functions */ 22:00:29 1960 function TO_CLOB(RIGHT VARCHAR2 CHARACTER SET ANY_CS) return CLOB; 22:00:29 1961 pragma BUILTIN('TO_CLOB', 0, 15, 29); -- OPC_CVT_CHR2CLB 22:00:29 1962 function TO_BLOB(RIGHT RAW) return BLOB; 22:00:29 1963 pragma BUILTIN('TO_BLOB', 0, 15, 30); -- OPC_CVT_RAW2BLB 22:00:29 1964 function TO_RAW(RIGHT BLOB) return RAW; 22:00:29 1965 pragma BUILTIN('TO_RAW', 0, 15, 32); -- OPC_CVT_BLB2RAW 22:00:29 1966 22:00:29 1967 -- ####### end of 8.2 LOB Built-in Functions ######## -- 22:00:29 1968 22:00:29 1969 function NULLIF(v1 VARCHAR2, v2 VARCHAR2) return VARCHAR2; 22:00:29 1970 function NULLIF(v1 BOOLEAN, v2 BOOLEAN) return BOOLEAN; 22:00:29 1971 function NULLIF(a1 "", a2 "") return ""; 22:00:29 1972 22:00:29 1973 function COALESCE return VARCHAR2; 22:00:29 1974 22:00:29 1975 /* Daylight Saving Time Functions */ 22:00:29 1976 FUNCTION tz_offset(region VARCHAR2) RETURN VARCHAR2; 22:00:29 1977 FUNCTION from_tz(t TIMESTAMP_UNCONSTRAINED,timezone VARCHAR2) 22:00:29 1978 RETURN timestamp_tz_unconstrained; 22:00:29 1979 22:00:29 1980 function " SYS$EXTRACT_STRING_FROM" 22:00:29 1981 (T TIME_TZ_UNCONSTRAINED,FIELD varchar2) return VARCHAR2; 22:00:29 1982 function " SYS$EXTRACT_STRING_FROM" 22:00:29 1983 (T TIMESTAMP_TZ_UNCONSTRAINED,FIELD VARCHAR2) return VARCHAR2; 22:00:29 1984 function " SYS$EXTRACT_STRING_FROM" 22:00:29 1985 (T TIMESTAMP_LTZ_UNCONSTRAINED,FIELD varchar2) return VARCHAR2; 22:00:29 1986 22:00:29 1987 function INSTR2(STR1 VARCHAR2 CHARACTER SET ANY_CS, 22:00:29 1988 STR2 VARCHAR2 CHARACTER SET STR1%CHARSET, 22:00:29 1989 POS PLS_INTEGER := 1, 22:00:29 1990 NTH POSITIVE := 1) return PLS_INTEGER; 22:00:29 1991 pragma FIPSFLAG('INSTR2', 1452); 22:00:29 1992 22:00:29 1993 function INSTR4(STR1 VARCHAR2 CHARACTER SET ANY_CS, 22:00:29 1994 STR2 VARCHAR2 CHARACTER SET STR1%CHARSET, 22:00:29 1995 POS PLS_INTEGER := 1, 22:00:29 1996 NTH POSITIVE := 1) return PLS_INTEGER; 22:00:29 1997 pragma FIPSFLAG('INSTR4', 1452); 22:00:29 1998 22:00:29 1999 function INSTRC(STR1 VARCHAR2 CHARACTER SET ANY_CS, 22:00:29 2000 STR2 VARCHAR2 CHARACTER SET STR1%CHARSET, 22:00:29 2001 POS PLS_INTEGER := 1, 22:00:29 2002 NTH POSITIVE := 1) return PLS_INTEGER; 22:00:29 2003 pragma FIPSFLAG('INSTRC', 1452); 22:00:29 2004 22:00:29 2005 function LENGTH2(ch VARCHAR2 CHARACTER SET ANY_CS) return natural; 22:00:29 2006 pragma FIPSFLAG('LENGTH2', 1452); 22:00:29 2007 22:00:29 2008 function LENGTH4(ch VARCHAR2 CHARACTER SET ANY_CS) return natural; 22:00:29 2009 pragma FIPSFLAG('LENGTH4', 1452); 22:00:29 2010 22:00:29 2011 function LENGTHC(ch VARCHAR2 CHARACTER SET ANY_CS) return natural; 22:00:29 2012 pragma FIPSFLAG('LENGTHC', 1452); 22:00:29 2013 22:00:29 2014 function 'LIKE2' (str VARCHAR2 CHARACTER SET ANY_CS, 22:00:29 2015 pat VARCHAR2 CHARACTER SET str%CHARSET) 22:00:29 2016 return BOOLEAN; 22:00:29 2017 function 'NOT_LIKE2' (str VARCHAR2 CHARACTER SET ANY_CS, 22:00:29 2018 pat VARCHAR2 CHARACTER SET str%CHARSET) 22:00:29 2019 return BOOLEAN; 22:00:29 2020 function 'LIKE2' (str VARCHAR2 CHARACTER SET ANY_CS, 22:00:29 2021 pat VARCHAR2 CHARACTER SET str%CHARSET, 22:00:29 2022 esc VARCHAR2 CHARACTER SET str%CHARSET) 22:00:29 2023 return BOOLEAN; 22:00:29 2024 function 'NOT_LIKE2' (str VARCHAR2 CHARACTER SET ANY_CS, 22:00:29 2025 pat VARCHAR2 CHARACTER SET str%CHARSET, 22:00:29 2026 esc VARCHAR2 CHARACTER SET str%CHARSET) 22:00:29 2027 return BOOLEAN; 22:00:29 2028 22:00:29 2029 function 'LIKE4' (str VARCHAR2 CHARACTER SET ANY_CS, 22:00:29 2030 pat VARCHAR2 CHARACTER SET str%CHARSET) 22:00:29 2031 return BOOLEAN; 22:00:29 2032 function 'NOT_LIKE4' (str VARCHAR2 CHARACTER SET ANY_CS, 22:00:29 2033 pat VARCHAR2 CHARACTER SET str%CHARSET) 22:00:29 2034 return BOOLEAN; 22:00:29 2035 function 'LIKE4' (str VARCHAR2 CHARACTER SET ANY_CS, 22:00:29 2036 pat VARCHAR2 CHARACTER SET str%CHARSET, 22:00:29 2037 esc VARCHAR2 CHARACTER SET str%CHARSET) 22:00:29 2038 return BOOLEAN; 22:00:29 2039 function 'NOT_LIKE4' (str VARCHAR2 CHARACTER SET ANY_CS, 22:00:29 2040 pat VARCHAR2 CHARACTER SET str%CHARSET, 22:00:29 2041 esc VARCHAR2 CHARACTER SET str%CHARSET) 22:00:29 2042 return BOOLEAN; 22:00:29 2043 22:00:29 2044 function 'LIKEC' (str VARCHAR2 CHARACTER SET ANY_CS, 22:00:29 2045 pat VARCHAR2 CHARACTER SET str%CHARSET) 22:00:29 2046 return BOOLEAN; 22:00:29 2047 function 'NOT_LIKEC' (str VARCHAR2 CHARACTER SET ANY_CS, 22:00:29 2048 pat VARCHAR2 CHARACTER SET str%CHARSET) 22:00:29 2049 return BOOLEAN; 22:00:29 2050 function 'LIKEC' (str VARCHAR2 CHARACTER SET ANY_CS, 22:00:29 2051 pat VARCHAR2 CHARACTER SET str%CHARSET, 22:00:29 2052 esc VARCHAR2 CHARACTER SET str%CHARSET) 22:00:29 2053 return BOOLEAN; 22:00:29 2054 function 'NOT_LIKEC' (str VARCHAR2 CHARACTER SET ANY_CS, 22:00:29 2055 pat VARCHAR2 CHARACTER SET str%CHARSET, 22:00:29 2056 esc VARCHAR2 CHARACTER SET str%CHARSET) 22:00:29 2057 return BOOLEAN; 22:00:29 2058 22:00:29 2059 function SUBSTR2(STR1 VARCHAR2 CHARACTER SET ANY_CS, 22:00:29 2060 POS PLS_INTEGER, 22:00:29 2061 LEN PLS_INTEGER := 2147483647) 22:00:29 2062 return VARCHAR2 CHARACTER SET STR1%CHARSET; 22:00:29 2063 pragma FIPSFLAG('SUBSTR2', 1452); 22:00:29 2064 22:00:29 2065 function SUBSTR4(STR1 VARCHAR2 CHARACTER SET ANY_CS, 22:00:29 2066 POS PLS_INTEGER, 22:00:29 2067 LEN PLS_INTEGER := 2147483647) 22:00:29 2068 return VARCHAR2 CHARACTER SET STR1%CHARSET; 22:00:29 2069 pragma FIPSFLAG('SUBSTR4', 1452); 22:00:29 2070 22:00:29 2071 function SUBSTRC(STR1 VARCHAR2 CHARACTER SET ANY_CS, 22:00:29 2072 POS PLS_INTEGER, 22:00:29 2073 LEN PLS_INTEGER := 2147483647) 22:00:29 2074 return VARCHAR2 CHARACTER SET STR1%CHARSET; 22:00:29 2075 pragma FIPSFLAG('SUBSTRC', 1452); 22:00:29 2076 22:00:29 2077 /**** char <--> nchar conversion functions in Unicode project ********/ 22:00:29 2078 22:00:29 2079 function TO_NCHAR(RIGHT NVARCHAR2) return NVARCHAR2; 22:00:29 2080 pragma BUILTIN('TO_NCHAR',14, 0, 2); 22:00:29 2081 22:00:29 2082 function TO_NCLOB(cl CLOB CHARACTER SET ANY_CS) return NCLOB; 22:00:29 2083 function TO_CLOB(cl CLOB CHARACTER SET ANY_CS) return CLOB; 22:00:29 2084 22:00:29 2085 function TO_NCLOB(RIGHT VARCHAR2 CHARACTER SET ANY_CS) 22:00:29 2086 return NCLOB; 22:00:29 2087 pragma BUILTIN('TO_NCLOB', 0, 15, 29); -- OPC_CVT_CHR2CLB 22:00:29 2088 /* convert to either CLOB or NCLOB respectively if parm is char or nchar */ 22:00:29 2089 function TO_ANYLOB(RIGHT VARCHAR2 CHARACTER SET ANY_CS) 22:00:29 2090 return CLOB CHARACTER SET RIGHT%CHARSET; 22:00:29 2091 pragma BUILTIN('TO_ANYLOB', 0, 15, 29); -- OPC_CVT_CHR2CLB 22:00:29 2092 22:00:29 2093 /* Followings are the same builtin op codes as without N prefix functions, 22:00:29 2094 * implementation relys on impilcit conversion MCODEs 22:00:29 2095 */ 22:00:29 2096 function TO_NCHAR (LEFT DATE, FORMAT NVARCHAR2) return NVARCHAR2; 22:00:29 2097 pragma BUILTIN('TO_NCHAR',41, 12, 19); -- PEMS_DATE, DAT_CNV_CHR1 22:00:29 2098 pragma FIPSFLAG('TO_NCHAR', 1450); 22:00:29 2099 function TO_NCHAR (LEFT NUMBER, FORMAT NVARCHAR2) return NVARCHAR2; 22:00:29 2100 pragma BUILTIN('TO_NCHAR',41, 2, 14); -- PEMS_NUMBER, NUM_CNV_CHR 22:00:29 2101 22:00:29 2102 function NHEXTORAW (c NVARCHAR2) return RAW; 22:00:29 2103 pragma builtin('NHEXTORAW', 1, 23, 1); 22:00:29 2104 function RAWTONHEX (r RAW) return NVARCHAR2; 22:00:29 2105 pragma builtin('RAWTONHEX', 1, 23, 2); 22:00:29 2106 function NCHARTOROWID (str NVARCHAR2) return ROWID; 22:00:29 2107 pragma builtin('NCHARTOROWID', 1, 0, 1); 22:00:29 2108 function ROWIDTONCHAR (str ROWID) return NVARCHAR2; 22:00:29 2109 pragma builtin('ROWIDTONCHAR', 1, 0, 1); 22:00:29 2110 22:00:29 2111 function NCHR(n integer) return NVARCHAR2; 22:00:29 2112 22:00:29 2113 /* implemented by icd calls as the same as TO_CHAR */ 22:00:29 2114 function TO_NCHAR(left date, format nvarchar2, parms nvarchar2) 22:00:29 2115 return nvarchar2; 22:00:29 2116 function TO_NCHAR(left number, format nvarchar2, parms nvarchar2) 22:00:29 2117 return nvarchar2; 22:00:29 2118 22:00:29 2119 /* implemented as a icd call, return TRUE if nchar, otherwise FALSE */ 22:00:29 2120 function ISNCHAR(c VARCHAR2 character set any_cs) return boolean; 22:00:29 2121 22:00:29 2122 /************ end of char <--> nchar conversion functions ************/ 22:00:29 2123 22:00:29 2124 /* Create overloads for all standard functions that work with for 22:00:29 2125 */ 22:00:29 2126 function '=' (LEFT "", RIGHT "") return BOOLEAN; 22:00:29 2127 pragma BUILTIN('=', 1, 1, 1); 22:00:29 2128 pragma FIPSFLAG('=', 1450); 22:00:29 2129 function '!=' (LEFT "", RIGHT "") return BOOLEAN; 22:00:29 2130 pragma BUILTIN('!=', 1, 1, 1); 22:00:29 2131 pragma FIPSFLAG('!=', 1450); 22:00:29 2132 function '<' (LEFT "", RIGHT "") return BOOLEAN; 22:00:29 2133 pragma BUILTIN('<', 1, 1, 1); 22:00:29 2134 pragma FIPSFLAG('<', 1450); 22:00:29 2135 function '<=' (LEFT "", RIGHT "") return BOOLEAN; 22:00:29 2136 pragma BUILTIN('<=', 1, 1, 1); 22:00:29 2137 pragma FIPSFLAG('<=', 1450); 22:00:29 2138 function '>' (LEFT "", RIGHT "") return BOOLEAN; 22:00:29 2139 pragma BUILTIN('>', 1, 1, 1); 22:00:29 2140 pragma FIPSFLAG('>', 1450); 22:00:29 2141 function '>=' (LEFT "", RIGHT "") return BOOLEAN; 22:00:29 2142 pragma BUILTIN('>=', 1, 1, 1); 22:00:29 2143 pragma FIPSFLAG('>=', 1450); 22:00:29 2144 22:00:29 2145 function '=ANY' (LEFT "", RIGHT "") return BOOLEAN; 22:00:29 2146 function '!=ANY' (LEFT "", RIGHT "") return BOOLEAN; 22:00:29 2147 function '", RIGHT "") return BOOLEAN; 22:00:29 2148 function '<=ANY' (LEFT "", RIGHT "") return BOOLEAN; 22:00:29 2149 function '>ANY' (LEFT "", RIGHT "") return BOOLEAN; 22:00:29 2150 function '>=ANY' (LEFT "", RIGHT "") return BOOLEAN; 22:00:29 2151 function '=ALL' (LEFT "", RIGHT "") return BOOLEAN; 22:00:29 2152 function '!=ALL' (LEFT "", RIGHT "") return BOOLEAN; 22:00:29 2153 function '", RIGHT "") return BOOLEAN; 22:00:29 2154 function '<=ALL' (LEFT "", RIGHT "") return BOOLEAN; 22:00:29 2155 function '>ALL' (LEFT "", RIGHT "") return BOOLEAN; 22:00:29 2156 function '>=ALL' (LEFT "", RIGHT "") return BOOLEAN; 22:00:29 2157 function '=SOME' (LEFT "", RIGHT "") return BOOLEAN; 22:00:29 2158 function '!=SOME' (LEFT "", RIGHT "") return BOOLEAN; 22:00:29 2159 function '", RIGHT "") return BOOLEAN; 22:00:29 2160 function '<=SOME' (LEFT "", RIGHT "") return BOOLEAN; 22:00:29 2161 function '>SOME' (LEFT "", RIGHT "") return BOOLEAN; 22:00:29 2162 function '>=SOME' (LEFT "", RIGHT "") return BOOLEAN; 22:00:29 2163 22:00:29 2164 -- Outer Join 22:00:29 2165 function '(+)' ( colname "") return ""; 22:00:29 2166 pragma FIPSFLAG('(+)', 1450); 22:00:29 2167 22:00:29 2168 -- GREATEST and LEAST are not yet supported for ADTs in 8.0.2. 22:00:29 2169 -- function GREATEST (pattern "") return ""; 22:00:29 2170 -- pragma BUILTIN('GREATEST', 1, 1, 1); 22:00:29 2171 22:00:29 2172 -- function LEAST (pattern "") return ""; 22:00:29 2173 -- pragma BUILTIN('LEAST', 1, 1, 1); 22:00:29 2174 22:00:29 2175 function DECODE (expr "", pat "", res "") 22:00:29 2176 return ""; 22:00:29 2177 pragma BUILTIN('DECODE', 1, 1, 1); 22:00:29 2178 22:00:29 2179 function 'IS NULL' (B "") return BOOLEAN; 22:00:29 2180 pragma BUILTIN('IS NULL', 0, 3, 0); 22:00:29 2181 pragma FIPSFLAG('IS NULL', 1450); 22:00:29 2182 22:00:29 2183 function 'IS NOT NULL' (B "") return BOOLEAN; 22:00:29 2184 pragma BUILTIN('IS NOT NULL', 0, 3, 50); 22:00:29 2185 pragma FIPSFLAG('IS NOT NULL', 1450); 22:00:29 2186 22:00:29 2187 function NVL (B1 "", B2 "") return ""; 22:00:29 2188 pragma FIPSFLAG('NVL', 1450); 22:00:29 2189 22:00:29 2190 -- REFs to opaques are not supported yet. 22:00:29 2191 -- function VALUE (item "") return ""; 22:00:29 2192 -- pragma BUILTIN('VALUE', 1, 1, 1); 22:00:29 2193 -- pragma FIPSFLAG('VALUE', 1450); 22:00:29 2194 22:00:29 2195 -- function REF (item "") return REF ""; 22:00:29 2196 -- pragma BUILTIN('REF', 1, 1, 1); 22:00:29 2197 -- pragma FIPSFLAG('REF', 1450); 22:00:29 2198 22:00:29 2199 -- function DEREF (r REF "") return ""; 22:00:29 2200 -- pragma BUILTIN('DEREF', 1, 1, 1); 22:00:29 2201 -- pragma FIPSFLAG('DEREF', 1450); 22:00:29 2202 22:00:29 2203 -- overloadings for REF OPAQUE 22:00:29 2204 22:00:29 2205 -- function 'IS NULL' (B REF "") return BOOLEAN; 22:00:29 2206 -- pragma BUILTIN('IS NULL', 0, 3, 0); 22:00:29 2207 -- pragma FIPSFLAG('IS NULL', 1450); 22:00:29 2208 22:00:29 2209 -- function 'IS NOT NULL' (B REF "") return BOOLEAN; 22:00:29 2210 -- pragma FIPSFLAG('IS NOT NULL', 1450); 22:00:29 2211 22:00:29 2212 -- function 'IS DANGLING' (B REF "") return BOOLEAN; 22:00:29 2213 -- pragma BUILTIN('IS DANGLING', 1, 1, 1); 22:00:29 2214 -- pragma FIPSFLAG('IS DANGLING', 1450); 22:00:29 2215 22:00:29 2216 -- function 'IS NOT DANGLING' (B REF "") return BOOLEAN; 22:00:29 2217 -- pragma BUILTIN('IS NOT DANGLING', 1, 1, 1); 22:00:29 2218 -- pragma FIPSFLAG('IS NOT DANGLING', 1450); 22:00:29 2219 22:00:29 2220 -- function NVL (B1 REF "", B2 REF "") 22:00:29 2221 -- return REF ""; 22:00:29 2222 -- pragma FIPSFLAG('NVL', 1450); 22:00:29 2223 22:00:29 2224 -- function '=' (LEFT REF "", RIGHT REF "") 22:00:29 2225 -- return BOOLEAN; 22:00:29 2226 -- pragma BUILTIN('=', 0, 3, 1); 22:00:29 2227 -- pragma FIPSFLAG('=', 1450); 22:00:29 2228 22:00:29 2229 -- function '!=' (LEFT REF "", RIGHT REF "") 22:00:29 2230 -- return BOOLEAN; 22:00:29 2231 -- pragma BUILTIN('!=', 0, 3, 2); 22:00:29 2232 -- pragma FIPSFLAG('!=', 1450); 22:00:29 2233 22:00:29 2234 function GROUPING(a "") return NUMBER; 22:00:29 2235 function NULLIF(a1 "", a2 "") RETURN ""; 22:00:29 2236 22:00:29 2237 function GREATEST (pattern TIME_UNCONSTRAINED) return TIME_UNCONSTRAINED; 22:00:29 2238 pragma BUILTIN('GREATEST',12,240,240);-- This is special cased in PH2 -- Pj 22:00:29 2239 function GREATEST (pattern TIME_TZ_UNCONSTRAINED) 22:00:29 2240 return TIME_TZ_UNCONSTRAINED; 22:00:29 2241 pragma BUILTIN('GREATEST',12,240,240);-- This is special cased in PH2 -- Pj 22:00:29 2242 function GREATEST (pattern TIMESTAMP_UNCONSTRAINED) 22:00:29 2243 return TIMESTAMP_UNCONSTRAINED; 22:00:29 2244 pragma BUILTIN('GREATEST',12,240,240);-- This is special cased in PH2 -- Pj 22:00:29 2245 function GREATEST (pattern TIMESTAMP_TZ_UNCONSTRAINED) 22:00:29 2246 return TIMESTAMP_TZ_UNCONSTRAINED; 22:00:29 2247 pragma BUILTIN('GREATEST',12,240,240);-- This is special cased in PH2 -- Pj 22:00:29 2248 function GREATEST (pattern TIMESTAMP_LTZ_UNCONSTRAINED) 22:00:29 2249 return TIMESTAMP_LTZ_UNCONSTRAINED; 22:00:29 2250 pragma BUILTIN('GREATEST',12,240,240);-- This is special cased in PH2 -- Pj 22:00:29 2251 function GREATEST (pattern YMINTERVAL_UNCONSTRAINED) 22:00:29 2252 return YMINTERVAL_UNCONSTRAINED; 22:00:29 2253 pragma BUILTIN('GREATEST',12,240,240);-- This is special cased in PH2 -- Pj 22:00:29 2254 function GREATEST (pattern DSINTERVAL_UNCONSTRAINED) 22:00:29 2255 return DSINTERVAL_UNCONSTRAINED; 22:00:29 2256 pragma BUILTIN('GREATEST',12,240,240);-- This is special cased in PH2 -- Pj 22:00:29 2257 22:00:29 2258 function LEAST (pattern TIME_UNCONSTRAINED) return TIME_UNCONSTRAINED; 22:00:29 2259 pragma BUILTIN('LEAST',12,240,240);-- This is special cased in PH2 -- Pj 22:00:29 2260 function LEAST (pattern TIME_TZ_UNCONSTRAINED) return TIME_TZ_UNCONSTRAINED; 22:00:29 2261 pragma BUILTIN('LEAST',12,240,240);-- This is special cased in PH2 -- Pj 22:00:29 2262 function LEAST (pattern TIMESTAMP_UNCONSTRAINED) 22:00:29 2263 return TIMESTAMP_UNCONSTRAINED; 22:00:29 2264 pragma BUILTIN('LEAST',12,240,240);-- This is special cased in PH2 -- Pj 22:00:29 2265 function LEAST (pattern TIMESTAMP_TZ_UNCONSTRAINED) 22:00:29 2266 return TIMESTAMP_TZ_UNCONSTRAINED; 22:00:29 2267 pragma BUILTIN('LEAST',12,240,240);-- This is special cased in PH2 -- Pj 22:00:29 2268 function LEAST (pattern TIMESTAMP_LTZ_UNCONSTRAINED) 22:00:29 2269 return TIMESTAMP_LTZ_UNCONSTRAINED; 22:00:29 2270 pragma BUILTIN('LEAST',12,240,240);-- This is special cased in PH2 -- Pj 22:00:29 2271 function LEAST (pattern YMINTERVAL_UNCONSTRAINED) 22:00:29 2272 return YMINTERVAL_UNCONSTRAINED; 22:00:29 2273 pragma BUILTIN('LEAST',12,240,240);-- This is special cased in PH2 -- Pj 22:00:29 2274 function LEAST (pattern DSINTERVAL_UNCONSTRAINED) 22:00:29 2275 return DSINTERVAL_UNCONSTRAINED; 22:00:29 2276 pragma BUILTIN('LEAST',12,240,240);-- This is special cased in PH2 -- Pj 22:00:29 2277 22:00:29 2278 function TO_CHAR(left TIME_UNCONSTRAINED, format VARCHAR2, 22:00:29 2279 parms VARCHAR2) return VARCHAR2; 22:00:29 2280 function TO_CHAR(left TIME_UNCONSTRAINED, format VARCHAR2) return VARCHAR2; 22:00:29 2281 function TO_CHAR(left TIME_TZ_UNCONSTRAINED, format VARCHAR2, 22:00:29 2282 parms VARCHAR2) return VARCHAR2; 22:00:29 2283 function TO_CHAR(left TIME_TZ_UNCONSTRAINED, format VARCHAR2) 22:00:29 2284 return VARCHAR2; 22:00:29 2285 function TO_CHAR(left TIMESTAMP_UNCONSTRAINED, format VARCHAR2, 22:00:29 2286 parms VARCHAR2) return VARCHAR2; 22:00:29 2287 function TO_CHAR(left TIMESTAMP_UNCONSTRAINED, format VARCHAR2) 22:00:29 2288 return VARCHAR2; 22:00:29 2289 function TO_CHAR(left TIMESTAMP_TZ_UNCONSTRAINED, format VARCHAR2, 22:00:29 2290 parms VARCHAR2) return VARCHAR2; 22:00:29 2291 function TO_CHAR(left TIMESTAMP_TZ_UNCONSTRAINED, format VARCHAR2) 22:00:29 2292 return VARCHAR2; 22:00:29 2293 function TO_CHAR(left TIMESTAMP_LTZ_UNCONSTRAINED, format VARCHAR2, 22:00:29 2294 parms VARCHAR2) return VARCHAR2; 22:00:29 2295 function TO_CHAR(left TIMESTAMP_LTZ_UNCONSTRAINED, format VARCHAR2) 22:00:29 2296 return VARCHAR2; 22:00:29 2297 function TO_CHAR(left YMINTERVAL_UNCONSTRAINED, format VARCHAR2, 22:00:29 2298 parms VARCHAR2) return VARCHAR2; 22:00:29 2299 function TO_CHAR(left YMINTERVAL_UNCONSTRAINED, format VARCHAR2) 22:00:29 2300 return VARCHAR2; 22:00:29 2301 function TO_CHAR(left DSINTERVAL_UNCONSTRAINED, format VARCHAR2, 22:00:29 2302 parms VARCHAR2) return VARCHAR2; 22:00:29 2303 function TO_CHAR(left DSINTERVAL_UNCONSTRAINED, format VARCHAR2) 22:00:29 2304 return VARCHAR2; 22:00:29 2305 22:00:29 2306 -- CONVERT FOR LOB -- 22:00:29 2307 function CONVERT(SRCSTR CLOB CHARACTER SET ANY_CS, 22:00:29 2308 DSTCSN VARCHAR2) 22:00:29 2309 return CLOB CHARACTER SET SRCSTR%CHARSET; 22:00:29 2310 function CONVERT(SRCSTR CLOB CHARACTER SET ANY_CS, 22:00:29 2311 DSTCSN VARCHAR2, 22:00:29 2312 SRCCSN VARCHAR2) 22:00:29 2313 return CLOB CHARACTER SET SRCSTR%CHARSET; 22:00:29 2314 22:00:29 2315 -- NLS_UPPER/NLS_LOWER FOR LOB -- 22:00:29 2316 function NLS_UPPER(ch CLOB CHARACTER SET ANY_CS, 22:00:29 2317 parms VARCHAR2 CHARACTER SET ch%CHARSET) 22:00:29 2318 return CLOB CHARACTER SET ch%CHARSET; 22:00:29 2319 pragma FIPSFLAG('NLS_UPPER', 1452); 22:00:29 2320 function NLS_UPPER(ch CLOB CHARACTER SET ANY_CS) 22:00:29 2321 return CLOB CHARACTER SET ch%CHARSET; 22:00:29 2322 pragma FIPSFLAG('NLS_UPPER', 1452); 22:00:29 2323 function NLS_LOWER(ch CLOB CHARACTER SET ANY_CS, 22:00:29 2324 parms VARCHAR2 CHARACTER SET ch%CHARSET) 22:00:29 2325 return CLOB CHARACTER SET ch%CHARSET; 22:00:29 2326 pragma FIPSFLAG('NLS_LOWER', 1452); 22:00:29 2327 function NLS_LOWER(ch CLOB CHARACTER SET ANY_CS) 22:00:29 2328 return CLOB CHARACTER SET ch%CHARSET; 22:00:29 2329 pragma FIPSFLAG('NLS_LOWER', 1452); 22:00:29 2330 22:00:29 2331 function COMPOSE(ch VARCHAR2 CHARACTER SET ANY_CS) 22:00:29 2332 return varchar2 character set ch%charset; 22:00:29 2333 pragma FIPSFLAG('COMPOSE', 1452); 22:00:29 2334 function DECOMPOSE(ch VARCHAR2 CHARACTER SET ANY_CS, 22:00:29 2335 canmode in VARCHAR2 DEFAULT 'CANONICAL') 22:00:29 2336 return varchar2 character set ch%charset; 22:00:29 2337 pragma FIPSFLAG('DECOMPOSE', 1452); 22:00:29 2338 FUNCTION SYS_EXTRACT_UTC(t timestamp_tz_unconstrained) 22:00:29 2339 return TIMESTAMP_UNCONSTRAINED; 22:00:29 2340 22:00:29 2341 -- Begin REGEXP Support (10iR1) -- 22:00:29 2342 22:00:29 2343 -- REGEXP_LIKE -- 22:00:29 2344 function REGEXP_LIKE (srcstr VARCHAR2 CHARACTER SET ANY_CS, 22:00:29 2345 pattern VARCHAR2 CHARACTER SET srcstr%CHARSET, 22:00:29 2346 modifier VARCHAR2 DEFAULT NULL) 22:00:29 2347 return BOOLEAN; 22:00:29 2348 pragma FIPSFLAG('REGEXP_LIKE', 1452); 22:00:29 2349 22:00:29 2350 function REGEXP_LIKE (srcstr CLOB CHARACTER SET ANY_CS, 22:00:29 2351 pattern VARCHAR2 CHARACTER SET srcstr%CHARSET, 22:00:29 2352 modifier VARCHAR2 DEFAULT NULL) 22:00:29 2353 return BOOLEAN; 22:00:29 2354 pragma FIPSFLAG('REGEXP_LIKE', 1452); 22:00:29 2355 22:00:29 2356 -- REGEXP_INSTR -- 22:00:29 2357 function REGEXP_INSTR(srcstr VARCHAR2 CHARACTER SET ANY_CS, 22:00:29 2358 pattern VARCHAR2 CHARACTER SET srcstr%CHARSET, 22:00:29 2359 position PLS_INTEGER := 1, 22:00:29 2360 occurrence PLS_INTEGER := 1, 22:00:29 2361 returnparam PLS_INTEGER := 0, 22:00:29 2362 modifier VARCHAR2 DEFAULT NULL, 22:00:29 2363 subexpression PLS_INTEGER := 0) 22:00:29 2364 return PLS_INTEGER; 22:00:29 2365 pragma FIPSFLAG('REGEXP_INSTR', 1452); 22:00:29 2366 22:00:29 2367 function REGEXP_INSTR(srcstr CLOB CHARACTER SET ANY_CS, 22:00:29 2368 pattern VARCHAR2 CHARACTER SET srcstr%CHARSET, 22:00:29 2369 position INTEGER := 1, 22:00:29 2370 occurrence INTEGER := 1, 22:00:29 2371 returnparam PLS_INTEGER := 0, 22:00:29 2372 modifier VARCHAR2 DEFAULT NULL, 22:00:29 2373 subexpression PLS_INTEGER := 0) 22:00:29 2374 return INTEGER; 22:00:29 2375 pragma FIPSFLAG('REGEXP_INSTR', 1452); 22:00:29 2376 22:00:29 2377 22:00:29 2378 -- REGEXP_SUBSTR -- 22:00:29 2379 function REGEXP_SUBSTR(srcstr VARCHAR2 CHARACTER SET ANY_CS, 22:00:29 2380 pattern VARCHAR2 CHARACTER SET srcstr%CHARSET, 22:00:29 2381 position PLS_INTEGER := 1, 22:00:29 2382 occurrence PLS_INTEGER := 1, 22:00:29 2383 modifier VARCHAR2 DEFAULT NULL, 22:00:29 2384 subexpression PLS_INTEGER := 0) 22:00:29 2385 return VARCHAR2 CHARACTER SET srcstr%CHARSET; 22:00:29 2386 pragma FIPSFLAG('REGEXP_SUBSTR', 1452); 22:00:29 2387 22:00:29 2388 function REGEXP_SUBSTR(srcstr CLOB CHARACTER SET ANY_CS, 22:00:29 2389 pattern VARCHAR2 CHARACTER SET srcstr%CHARSET, 22:00:29 2390 position INTEGER := 1, 22:00:29 2391 occurrence INTEGER := 1, 22:00:29 2392 modifier VARCHAR2 DEFAULT NULL, 22:00:29 2393 subexpression PLS_INTEGER := 0) 22:00:29 2394 return CLOB CHARACTER SET srcstr%CHARSET; 22:00:29 2395 pragma FIPSFLAG('REGEXP_SUBSTR', 1452); 22:00:29 2396 22:00:29 2397 -- REGEXP_REPLACE -- 22:00:29 2398 function REGEXP_REPLACE(srcstr VARCHAR2 CHARACTER SET ANY_CS, 22:00:29 2399 pattern VARCHAR2 CHARACTER SET srcstr%CHARSET, 22:00:29 2400 replacestr VARCHAR2 CHARACTER SET srcstr%CHARSET 22:00:29 2401 DEFAULT NULL, 22:00:29 2402 position PLS_INTEGER := 1, 22:00:29 2403 occurrence PLS_INTEGER := 0, 22:00:29 2404 modifier VARCHAR2 DEFAULT NULL) 22:00:29 2405 return VARCHAR2 CHARACTER SET srcstr%CHARSET; 22:00:29 2406 pragma FIPSFLAG('REGEXP_REPLACE', 1452); 22:00:29 2407 22:00:29 2408 function REGEXP_REPLACE(srcstr CLOB CHARACTER SET ANY_CS, 22:00:29 2409 pattern VARCHAR2 CHARACTER SET srcstr%CHARSET, 22:00:29 2410 replacestr CLOB CHARACTER SET srcstr%CHARSET 22:00:29 2411 DEFAULT NULL, 22:00:29 2412 position INTEGER := 1, 22:00:29 2413 occurrence INTEGER := 0, 22:00:29 2414 modifier VARCHAR2 DEFAULT NULL) 22:00:29 2415 return CLOB CHARACTER SET srcstr%CHARSET; 22:00:29 2416 pragma FIPSFLAG('REGEXP_REPLACE', 1452); 22:00:29 2417 22:00:29 2418 function REGEXP_REPLACE(srcstr CLOB CHARACTER SET ANY_CS, 22:00:29 2419 pattern VARCHAR2 CHARACTER SET srcstr%CHARSET, 22:00:29 2420 replacestr VARCHAR2 CHARACTER SET srcstr%CHARSET 22:00:29 2421 DEFAULT NULL, 22:00:29 2422 position INTEGER := 1, 22:00:29 2423 occurrence INTEGER := 0, 22:00:29 2424 modifier VARCHAR2 DEFAULT NULL) 22:00:29 2425 return CLOB CHARACTER SET srcstr%CHARSET; 22:00:29 2426 pragma FIPSFLAG('REGEXP_REPLACE', 1452); 22:00:29 2427 22:00:29 2428 -- End REGEXP Support -- 22:00:29 2429 22:00:29 2430 -- binary_float and binary_double functions and operators. 22:00:29 2431 function TO_BINARY_FLOAT (RIGHT BINARY_FLOAT) RETURN BINARY_FLOAT; 22:00:29 2432 pragma BUILTIN('TO_BINARY_FLOAT',14, 0, 1); -- PEMS_QUICK 22:00:29 2433 function TO_BINARY_FLOAT (LEFT VARCHAR2 CHARACTER SET ANY_CS, 22:00:29 2434 FORMAT VARCHAR2 CHARACTER SET LEFT%CHARSET) 22:00:29 2435 RETURN BINARY_FLOAT; 22:00:29 2436 function TO_BINARY_FLOAT (LEFT VARCHAR2 CHARACTER SET ANY_CS, 22:00:29 2437 FORMAT VARCHAR2 CHARACTER SET LEFT%CHARSET, 22:00:29 2438 PARMS VARCHAR2 CHARACTER SET LEFT%CHARSET) 22:00:29 2439 RETURN BINARY_FLOAT; 22:00:29 2440 22:00:29 2441 function TO_BINARY_DOUBLE (RIGHT BINARY_DOUBLE) RETURN BINARY_DOUBLE; 22:00:29 2442 pragma BUILTIN('TO_BINARY_DOUBLE',14, 0, 1); -- PEMS_QUICK 22:00:29 2443 function TO_BINARY_DOUBLE (LEFT VARCHAR2 CHARACTER SET ANY_CS, 22:00:29 2444 FORMAT VARCHAR2 CHARACTER SET LEFT%CHARSET) 22:00:29 2445 RETURN BINARY_DOUBLE; 22:00:29 2446 function TO_BINARY_DOUBLE (LEFT VARCHAR2 CHARACTER SET ANY_CS, 22:00:29 2447 FORMAT VARCHAR2 CHARACTER SET LEFT%CHARSET, 22:00:29 2448 PARMS VARCHAR2 CHARACTER SET LEFT%CHARSET) 22:00:29 2449 RETURN BINARY_DOUBLE; 22:00:29 2450 22:00:29 2451 function 'IS NAN' (N NUMBER) RETURN BOOLEAN; 22:00:29 2452 function 'IS NAN' (F BINARY_FLOAT) RETURN BOOLEAN; 22:00:29 2453 function 'IS NAN' (D BINARY_DOUBLE) RETURN BOOLEAN; 22:00:29 2454 function 'IS INFINITE' (N NUMBER) RETURN BOOLEAN; 22:00:29 2455 function 'IS INFINITE' (F BINARY_FLOAT) RETURN BOOLEAN; 22:00:29 2456 function 'IS INFINITE' (D BINARY_DOUBLE) RETURN BOOLEAN; 22:00:29 2457 function 'IS NOT NAN' (N NUMBER) RETURN BOOLEAN; 22:00:29 2458 function 'IS NOT NAN' (F BINARY_FLOAT) RETURN BOOLEAN; 22:00:29 2459 function 'IS NOT NAN' (D BINARY_DOUBLE) RETURN BOOLEAN; 22:00:29 2460 function 'IS NOT INFINITE' (N NUMBER) RETURN BOOLEAN; 22:00:29 2461 function 'IS NOT INFINITE' (F BINARY_FLOAT) RETURN BOOLEAN; 22:00:29 2462 function 'IS NOT INFINITE' (D BINARY_DOUBLE) RETURN BOOLEAN; 22:00:29 2463 22:00:29 2464 function TO_CHAR (left binary_float, format varchar2) 22:00:29 2465 return VARCHAR2; 22:00:29 2466 function TO_CHAR (left binary_double, format varchar2) 22:00:29 2467 return VARCHAR2; 22:00:29 2468 22:00:29 2469 function TO_CHAR(left binary_float, format varchar2, parms varchar2) 22:00:29 2470 return varchar2; 22:00:29 2471 function TO_CHAR(left binary_double, format varchar2, parms varchar2) 22:00:29 2472 return varchar2; 22:00:29 2473 22:00:29 2474 function TO_NCHAR(left binary_float, format nvarchar2) return NVARCHAR2; 22:00:29 2475 function TO_NCHAR(left binary_double, format nvarchar2) return NVARCHAR2; 22:00:29 2476 22:00:29 2477 function TO_NCHAR(left binary_float, format nvarchar2, parms nvarchar2) 22:00:29 2478 return nvarchar2; 22:00:29 2479 function TO_NCHAR(left binary_double, format nvarchar2, parms nvarchar2) 22:00:29 2480 return nvarchar2; 22:00:29 2481 22:00:29 2482 function 'REMAINDER'(n1 NUMBER, n2 NUMBER) return NUMBER; 22:00:29 2483 pragma FIPSFLAG('REMAINDER', 1452); 22:00:29 2484 function REMAINDER(n1 NUMBER, n2 NUMBER) return NUMBER; 22:00:29 2485 pragma FIPSFLAG(REMAINDER, 1452); 22:00:29 2486 function 'REMAINDER'(f1 BINARY_FLOAT, f2 BINARY_FLOAT) return BINARY_FLOAT; 22:00:29 2487 pragma FIPSFLAG('REMAINDER', 1452); 22:00:29 2488 function REMAINDER(f1 BINARY_FLOAT, f2 BINARY_FLOAT) return BINARY_FLOAT; 22:00:29 2489 pragma FIPSFLAG(REMAINDER, 1452); 22:00:29 2490 function 'REMAINDER'(d1 BINARY_DOUBLE, d2 BINARY_DOUBLE) return BINARY_DOUBLE; 22:00:29 2491 pragma FIPSFLAG('REMAINDER', 1452); 22:00:29 2492 function REMAINDER(d1 BINARY_DOUBLE, d2 BINARY_DOUBLE) return BINARY_DOUBLE; 22:00:29 2493 pragma FIPSFLAG(REMAINDER, 1452); 22:00:29 2494 22:00:29 2495 function '=' (LEFT BINARY_FLOAT, RIGHT BINARY_FLOAT) return BOOLEAN; 22:00:29 2496 pragma BUILTIN('=',2, 2, 15); 22:00:29 2497 function '!=' (LEFT BINARY_FLOAT, RIGHT BINARY_FLOAT) return BOOLEAN; 22:00:29 2498 pragma BUILTIN('!=',5, 2, 16); 22:00:29 2499 pragma FIPSFLAG('!=', 1452); 22:00:29 2500 function '<' (LEFT BINARY_FLOAT, RIGHT BINARY_FLOAT) return BOOLEAN; 22:00:29 2501 pragma BUILTIN('<',4, 2, 17); 22:00:29 2502 function '<=' (LEFT BINARY_FLOAT, RIGHT BINARY_FLOAT) return BOOLEAN; 22:00:29 2503 pragma BUILTIN('<=',6, 2, 18); 22:00:29 2504 function '>' (LEFT BINARY_FLOAT, RIGHT BINARY_FLOAT) return BOOLEAN; 22:00:29 2505 pragma BUILTIN('>',1, 2, 19); 22:00:29 2506 function '>=' (LEFT BINARY_FLOAT, RIGHT BINARY_FLOAT) return BOOLEAN; 22:00:29 2507 pragma BUILTIN('>=',3, 2, 20); 22:00:29 2508 22:00:29 2509 function 'IS NULL' (n BINARY_FLOAT) return BOOLEAN; 22:00:29 2510 pragma BUILTIN('IS NULL', 0, 2, 0); 22:00:29 2511 function 'IS NOT NULL' (n BINARY_FLOAT) return BOOLEAN; 22:00:29 2512 pragma BUILTIN('IS NOT NULL', 0, 2, 50); 22:00:29 2513 22:00:29 2514 function NVL(f1 BINARY_FLOAT, f2 BINARY_FLOAT) return BINARY_FLOAT; 22:00:29 2515 pragma FIPSFLAG('NVL', 1452); 22:00:29 2516 22:00:29 2517 function '+' (RIGHT BINARY_FLOAT) return BINARY_FLOAT; 22:00:29 2518 pragma BUILTIN('+',14, 0, 1); 22:00:29 2519 function '-' (RIGHT BINARY_FLOAT) return BINARY_FLOAT; 22:00:29 2520 pragma BUILTIN('-',15, 2, 23); 22:00:29 2521 function ABS(F BINARY_FLOAT) return BINARY_FLOAT; 22:00:29 2522 pragma FIPSFLAG('ABS', 1452); 22:00:29 2523 22:00:29 2524 function '+' (LEFT BINARY_FLOAT, RIGHT BINARY_FLOAT) return BINARY_FLOAT; 22:00:29 2525 pragma BUILTIN('+',14, 2, 24); 22:00:29 2526 function '-' (LEFT BINARY_FLOAT, RIGHT BINARY_FLOAT) return BINARY_FLOAT; 22:00:29 2527 pragma BUILTIN('-',15, 2, 25); 22:00:29 2528 function '*' (LEFT BINARY_FLOAT, RIGHT BINARY_FLOAT) return BINARY_FLOAT; 22:00:29 2529 pragma BUILTIN('*',17, 2, 26); 22:00:29 2530 function '/' (LEFT BINARY_FLOAT, RIGHT BINARY_FLOAT) return BINARY_FLOAT; 22:00:29 2531 pragma BUILTIN('/',18, 2, 27); 22:00:29 2532 22:00:29 2533 function 'REM' (LEFT BINARY_FLOAT, RIGHT BINARY_FLOAT) return BINARY_FLOAT; 22:00:29 2534 pragma FIPSFLAG('REM', 1452); 22:00:29 2535 function 'MOD'(F1 BINARY_FLOAT, F2 BINARY_FLOAT) return BINARY_FLOAT; 22:00:29 2536 pragma FIPSFLAG('MOD', 1452); 22:00:29 2537 22:00:29 2538 function FLOOR(F BINARY_FLOAT) return BINARY_FLOAT; 22:00:29 2539 pragma FIPSFLAG('FLOOR', 1452); 22:00:29 2540 function CEIL(F BINARY_FLOAT) return BINARY_FLOAT; 22:00:29 2541 pragma FIPSFLAG('CEIL', 1452); 22:00:29 2542 function SIGN(f BINARY_FLOAT) return SIGNTYPE; 22:00:29 2543 pragma FIPSFLAG('SIGN', 1452); 22:00:29 2544 function SQRT(f BINARY_FLOAT) return BINARY_FLOAT; 22:00:29 2545 pragma FIPSFLAG('SQRT', 1452); 22:00:29 2546 22:00:29 2547 function TRUNC (F BINARY_FLOAT) return BINARY_FLOAT; 22:00:29 2548 pragma FIPSFLAG('TRUNC', 1452); 22:00:29 2549 22:00:29 2550 function ROUND (LEFT BINARY_FLOAT) return BINARY_FLOAT; 22:00:29 2551 pragma FIPSFLAG('ROUND', 1452); 22:00:29 2552 22:00:29 2553 function '=' (LEFT BINARY_DOUBLE, RIGHT BINARY_DOUBLE) return BOOLEAN; 22:00:29 2554 pragma BUILTIN('=',2, 2, 28); 22:00:29 2555 function '!=' (LEFT BINARY_DOUBLE, RIGHT BINARY_DOUBLE) return BOOLEAN; 22:00:29 2556 -- also <> and ~= 22:00:29 2557 pragma BUILTIN('!=',5, 2, 29); 22:00:29 2558 pragma FIPSFLAG('!=', 1452); 22:00:29 2559 function '<' (LEFT BINARY_DOUBLE, RIGHT BINARY_DOUBLE) return BOOLEAN; 22:00:29 2560 pragma BUILTIN('<',4, 2, 30); 22:00:29 2561 function '<=' (LEFT BINARY_DOUBLE, RIGHT BINARY_DOUBLE) return BOOLEAN; 22:00:29 2562 pragma BUILTIN('<=',6, 2, 31); 22:00:29 2563 function '>' (LEFT BINARY_DOUBLE, RIGHT BINARY_DOUBLE) return BOOLEAN; 22:00:29 2564 pragma BUILTIN('>',1, 2, 32); 22:00:29 2565 function '>=' (LEFT BINARY_DOUBLE, RIGHT BINARY_DOUBLE) return BOOLEAN; 22:00:29 2566 pragma BUILTIN('>=',3, 2, 33); 22:00:29 2567 22:00:29 2568 function 'IS NULL' (n BINARY_DOUBLE) return BOOLEAN; 22:00:29 2569 pragma BUILTIN('IS NULL', 0, 2, 0); 22:00:29 2570 function 'IS NOT NULL' (n BINARY_DOUBLE) return BOOLEAN; 22:00:29 2571 pragma BUILTIN('IS NOT NULL', 0, 2, 50); 22:00:29 2572 22:00:29 2573 function NVL(d1 BINARY_DOUBLE, d2 BINARY_DOUBLE) return BINARY_DOUBLE; 22:00:29 2574 pragma FIPSFLAG('NVL', 1452); 22:00:29 2575 22:00:29 2576 function '+' (RIGHT BINARY_DOUBLE) return BINARY_DOUBLE; 22:00:29 2577 pragma BUILTIN('+',14, 0, 1); 22:00:29 2578 function '-' (RIGHT BINARY_DOUBLE) return BINARY_DOUBLE; 22:00:29 2579 pragma BUILTIN('-',15, 2, 36); 22:00:29 2580 function ABS(D BINARY_DOUBLE) return BINARY_DOUBLE; 22:00:29 2581 pragma FIPSFLAG('ABS', 1452); 22:00:29 2582 22:00:29 2583 function ACOS(D BINARY_DOUBLE) return BINARY_DOUBLE; 22:00:29 2584 pragma FIPSFLAG('ACOS', 1452); 22:00:29 2585 22:00:29 2586 function ASIN(D BINARY_DOUBLE) return BINARY_DOUBLE; 22:00:29 2587 pragma FIPSFLAG('ASIN', 1452); 22:00:29 2588 22:00:29 2589 function ATAN(D BINARY_DOUBLE) return BINARY_DOUBLE; 22:00:29 2590 pragma FIPSFLAG('ATAN', 1452); 22:00:29 2591 22:00:29 2592 function ATAN2(x BINARY_DOUBLE, y BINARY_DOUBLE) return BINARY_DOUBLE; 22:00:29 2593 pragma FIPSFLAG('ATAN2', 1452); 22:00:29 2594 22:00:29 2595 function '+' (LEFT BINARY_DOUBLE, RIGHT BINARY_DOUBLE) return BINARY_DOUBLE; 22:00:29 2596 pragma BUILTIN('+',14, 2, 37); 22:00:29 2597 function '-' (LEFT BINARY_DOUBLE, RIGHT BINARY_DOUBLE) return BINARY_DOUBLE; 22:00:29 2598 pragma BUILTIN('-',15, 2, 38); 22:00:29 2599 function '*' (LEFT BINARY_DOUBLE, RIGHT BINARY_DOUBLE) return BINARY_DOUBLE; 22:00:29 2600 pragma BUILTIN('*',17, 2, 39); 22:00:29 2601 function '/' (LEFT BINARY_DOUBLE, RIGHT BINARY_DOUBLE) return BINARY_DOUBLE; 22:00:29 2602 pragma BUILTIN('/',18, 2, 40); 22:00:29 2603 22:00:29 2604 function 'REM' (LEFT BINARY_DOUBLE, RIGHT BINARY_DOUBLE) 22:00:29 2605 return BINARY_DOUBLE; 22:00:29 2606 pragma FIPSFLAG('REM', 1452); 22:00:29 2607 function 'MOD'(D1 BINARY_DOUBLE, D2 BINARY_DOUBLE) return BINARY_DOUBLE; 22:00:29 2608 pragma FIPSFLAG('MOD', 1452); 22:00:29 2609 22:00:29 2610 function '**' (LEFT BINARY_DOUBLE, RIGHT BINARY_DOUBLE) 22:00:29 2611 return BINARY_DOUBLE; 22:00:29 2612 pragma FIPSFLAG('**', 1452); 22:00:29 2613 22:00:29 2614 function FLOOR(D BINARY_DOUBLE) return BINARY_DOUBLE; 22:00:29 2615 pragma FIPSFLAG('FLOOR', 1452); 22:00:29 2616 function CEIL(D BINARY_DOUBLE) return BINARY_DOUBLE; 22:00:29 2617 pragma FIPSFLAG('CEIL', 1452); 22:00:29 2618 function SQRT(d BINARY_DOUBLE) return BINARY_DOUBLE; 22:00:29 2619 pragma FIPSFLAG('SQRT', 1452); 22:00:29 2620 function SIGN(d BINARY_DOUBLE) return SIGNTYPE; 22:00:29 2621 pragma FIPSFLAG('SIGN', 1452); 22:00:29 2622 22:00:29 2623 function COS(D BINARY_DOUBLE) return BINARY_DOUBLE; 22:00:29 2624 function SIN(D BINARY_DOUBLE) return BINARY_DOUBLE; 22:00:29 2625 function TAN(D BINARY_DOUBLE) return BINARY_DOUBLE; 22:00:29 2626 function COSH(D BINARY_DOUBLE) return BINARY_DOUBLE; 22:00:29 2627 function SINH(D BINARY_DOUBLE) return BINARY_DOUBLE; 22:00:29 2628 function TANH(D BINARY_DOUBLE) return BINARY_DOUBLE; 22:00:29 2629 function EXP(D BINARY_DOUBLE) return BINARY_DOUBLE; 22:00:29 2630 function LN(D BINARY_DOUBLE) return BINARY_DOUBLE; 22:00:29 2631 22:00:29 2632 function LOG (LEFT BINARY_DOUBLE, RIGHT BINARY_DOUBLE) return BINARY_DOUBLE; 22:00:29 2633 22:00:29 2634 function TRUNC (D BINARY_DOUBLE) return BINARY_DOUBLE; 22:00:29 2635 pragma FIPSFLAG('TRUNC', 1452); 22:00:30 2636 22:00:30 2637 function ROUND (LEFT BINARY_DOUBLE) return BINARY_DOUBLE; 22:00:30 2638 pragma FIPSFLAG('ROUND', 1452); 22:00:30 2639 22:00:30 2640 function POWER (d BINARY_DOUBLE, e BINARY_DOUBLE) return BINARY_DOUBLE; 22:00:30 2641 pragma FIPSFLAG('POWER', 1452); 22:00:30 2642 22:00:30 2643 function NANVL(n1 NUMBER, n2 NUMBER) return NUMBER; 22:00:30 2644 function NANVL(f1 BINARY_FLOAT, f2 BINARY_FLOAT) return BINARY_FLOAT; 22:00:30 2645 function NANVL(d1 BINARY_DOUBLE, d2 BINARY_DOUBLE) return BINARY_DOUBLE; 22:00:30 2646 22:00:30 2647 function GREATEST (pattern BINARY_FLOAT) return BINARY_FLOAT; 22:00:30 2648 pragma BUILTIN('GREATEST',12,240,240);-- This is special cased in PH2 22:00:30 2649 function GREATEST (pattern BINARY_DOUBLE) return BINARY_DOUBLE; 22:00:30 2650 pragma BUILTIN('GREATEST',12,240,240);-- This is special cased in PH2 22:00:30 2651 function LEAST (pattern BINARY_FLOAT) return BINARY_FLOAT; 22:00:30 2652 pragma BUILTIN('LEAST',13,240,240);-- This is special cased in PH2 22:00:30 2653 function LEAST (pattern BINARY_DOUBLE) return BINARY_DOUBLE; 22:00:30 2654 pragma BUILTIN('LEAST',13,240,240);-- This is special cased in PH2 22:00:30 2655 22:00:30 2656 22:00:30 2657 function '+' (RIGHT PLS_INTEGER) return PLS_INTEGER; 22:00:30 2658 pragma BUILTIN('+',14, 0, 1); -- PEMS_QUICK 22:00:30 2659 function '-' (RIGHT PLS_INTEGER) return PLS_INTEGER; 22:00:30 2660 pragma BUILTIN('-',15, 2, 41); 22:00:30 2661 function ABS(I PLS_INTEGER) return PLS_INTEGER; 22:00:30 2662 pragma FIPSFLAG('ABS', 1452); 22:00:30 2663 22:00:30 2664 function '+' (LEFT PLS_INTEGER, RIGHT PLS_INTEGER) return PLS_INTEGER; 22:00:30 2665 pragma BUILTIN('+',14, 2, 42); 22:00:30 2666 function '-' (LEFT PLS_INTEGER, RIGHT PLS_INTEGER) return PLS_INTEGER; 22:00:30 2667 pragma BUILTIN('-',14, 2, 43); 22:00:30 2668 function '*' (LEFT PLS_INTEGER, RIGHT PLS_INTEGER) return PLS_INTEGER; 22:00:30 2669 pragma BUILTIN('*',14, 2, 44); 22:00:30 2670 22:00:30 2671 function '=' (LEFT PLS_INTEGER, RIGHT PLS_INTEGER) return BOOLEAN; 22:00:30 2672 pragma BUILTIN('=',2, 2, 45); -- PEMS_PLS_INTEGER, PEMDCMEQ 22:00:30 2673 function '!=' (LEFT PLS_INTEGER, RIGHT PLS_INTEGER) return BOOLEAN; 22:00:30 2674 -- also <> and ~= 22:00:30 2675 pragma BUILTIN('!=',5, 2, 46); -- PEMS_PLS_INTEGER, PEMDCMNE 22:00:30 2676 pragma FIPSFLAG('!=', 1452); 22:00:30 2677 function '<' (LEFT PLS_INTEGER, RIGHT PLS_INTEGER) return BOOLEAN; 22:00:30 2678 pragma BUILTIN('<',4, 2, 47); -- PEMS_PLS_INTEGER, PEMDCMLT 22:00:30 2679 function '<=' (LEFT PLS_INTEGER, RIGHT PLS_INTEGER) return BOOLEAN; 22:00:30 2680 pragma BUILTIN('<=',6, 2, 48); -- PEMS_PLS_INTEGER, PEMDCMLE 22:00:30 2681 function '>' (LEFT PLS_INTEGER, RIGHT PLS_INTEGER) return BOOLEAN; 22:00:30 2682 pragma BUILTIN('>',1, 2, 49); -- PEMS_PLS_INTEGER, PEMDCMGT 22:00:30 2683 function '>=' (LEFT PLS_INTEGER, RIGHT PLS_INTEGER) return BOOLEAN; 22:00:30 2684 pragma BUILTIN('>=',3, 2, 51); -- PEMS_PLS_INTEGER, PEMDCMGE 22:00:30 2685 22:00:30 2686 function 'IS NULL' (I PLS_INTEGER) return BOOLEAN; 22:00:30 2687 pragma BUILTIN('IS NULL', 0, 2, 0); -- PEMS_PLS_INTEGER, PEMDNUL 22:00:30 2688 function 'IS NOT NULL' (I PLS_INTEGER) return BOOLEAN; 22:00:30 2689 pragma BUILTIN('IS NOT NULL', 0, 2, 50); -- PEMS_PLS_INTEGER, PEMDNUL 22:00:30 2690 22:00:30 2691 function NVL(I1 PLS_INTEGER, I2 PLS_INTEGER) return PLS_INTEGER; 22:00:30 2692 pragma FIPSFLAG('NVL', 1452); 22:00:30 2693 22:00:30 2694 function TRUNC (i pls_integer, places pls_integer := 0) return pls_integer; 22:00:30 2695 pragma FIPSFLAG('TRUNC', 1452); 22:00:30 2696 22:00:30 2697 function ROUND (i pls_integer, places pls_integer := 0) return pls_integer; 22:00:30 2698 pragma FIPSFLAG('ROUND', 1452); 22:00:30 2699 22:00:30 2700 function SIGN(i PLS_INTEGER) return SIGNTYPE; 22:00:30 2701 pragma FIPSFLAG('SIGN', 1452); 22:00:30 2702 22:00:30 2703 function GREATEST (pattern PLS_INTEGER) return PLS_INTEGER; 22:00:30 2704 pragma BUILTIN('GREATEST',12,240,240);-- This is special cased in PH2 22:00:30 2705 function LEAST (pattern PLS_INTEGER) return PLS_INTEGER; 22:00:30 2706 pragma BUILTIN('LEAST',13,240,240);-- This is special cased in PH2 22:00:30 2707 22:00:30 2708 -- MultiSet Functions and Operators. 22:00:30 2709 22:00:30 2710 -- Equality 22:00:30 2711 function '='(collection1 IN "",collection2 IN "") 22:00:30 2712 return BOOLEAN; 22:00:30 2713 pragma BUILTIN('=',2, 16, 1); 22:00:30 2714 22:00:30 2715 function '!='(collection1 IN "",collection2 IN "") 22:00:30 2716 return BOOLEAN; 22:00:30 2717 pragma BUILTIN('!=',2, 16, 2); 22:00:30 2718 22:00:30 2719 function CARDINALITY (collection IN "") return PLS_INTEGER; 22:00:30 2720 22:00:30 2721 function SET (collection IN "") return ""; 22:00:30 2722 pragma BUILTIN('SET',18, 5, 40);-- Dummy 22:00:30 2723 22:00:30 2724 function 'IS A SET' (collection IN "") return BOOLEAN; 22:00:30 2725 pragma BUILTIN('IS A SET',18, 5, 41);-- Dummy 22:00:30 2726 function 'IS NOT A SET'(collection IN "") return BOOLEAN; 22:00:30 2727 pragma BUILTIN('IS NOT A SET',18, 5, 42);-- Dummy 22:00:30 2728 22:00:30 2729 function 'IS EMPTY' (collection IN "") return BOOLEAN; 22:00:30 2730 function 'IS NOT EMPTY'(collection IN "") return BOOLEAN; 22:00:30 2731 22:00:30 2732 -- IS A SUBMULTISET OF 22:00:30 2733 function 'SUBMULTISET' (collection IN "", 22:00:30 2734 collection2 IN "") 22:00:30 2735 return BOOLEAN; 22:00:30 2736 pragma BUILTIN('SUBMULTISET',18, 5, 43); 22:00:30 2737 22:00:30 2738 function 'MULTISET_UNION_ALL' (collection IN "", 22:00:30 2739 collection2 IN "") 22:00:30 2740 return ""; 22:00:30 2741 pragma BUILTIN('MULTISET_UNION_ALL',18, 5, 44); 22:00:30 2742 22:00:30 2743 function 'MULTISET_UNION_DISTINCT' (collection IN "", 22:00:30 2744 collection2 IN "") 22:00:30 2745 return ""; 22:00:30 2746 pragma BUILTIN('MULTISET_UNION_DISTINCT',18, 5, 45);-- Dummy 22:00:30 2747 22:00:30 2748 function 'MULTISET_EXCEPT_ALL' (collection IN "", 22:00:30 2749 collection2 IN "") 22:00:30 2750 return ""; 22:00:30 2751 pragma BUILTIN('MULTISET_EXCEPT_ALL',18, 5, 46);-- Dummy 22:00:30 2752 22:00:30 2753 function 'MULTISET_EXCEPT_DISTINCT' (collection IN "", 22:00:30 2754 collection2 IN "") 22:00:30 2755 return ""; 22:00:30 2756 pragma BUILTIN('MULTISET_EXCEPT_DISTINCT',18, 5, 47);-- Dummy 22:00:30 2757 22:00:30 2758 function 'MULTISET_INTERSECT_ALL' (collection IN "", 22:00:30 2759 collection2 IN "") 22:00:30 2760 return ""; 22:00:30 2761 pragma BUILTIN('MULTISET_INTERSECT_ALL',18, 5, 48);-- Dummy 22:00:30 2762 22:00:30 2763 function 'MULTISET_INTERSECT_DISTINCT' (collection IN "", 22:00:30 2764 collection2 IN "") 22:00:30 2765 return ""; 22:00:30 2766 pragma BUILTIN('MULTISET_INTERSECT_DISTINCT',18, 5, 49);-- Dummy 22:00:30 2767 22:00:30 2768 -- These are dummy procedures for correct management of new control 22:00:30 2769 -- statements added to PL/SQL. They ensure local procedures which have the 22:00:30 2770 -- same names as newly introduced keywords are not masked by those keywords. 22:00:30 2771 22:00:30 2772 procedure continue; 22:00:30 2773 22:00:30 2774 -- REGEXP_COUNT -- 22:00:30 2775 function REGEXP_COUNT(srcstr VARCHAR2 CHARACTER SET ANY_CS, 22:00:30 2776 pattern VARCHAR2 CHARACTER SET srcstr%CHARSET, 22:00:30 2777 position PLS_INTEGER := 1, 22:00:30 2778 modifier VARCHAR2 DEFAULT NULL) 22:00:30 2779 return PLS_INTEGER; 22:00:30 2780 pragma FIPSFLAG('REGEXP_COUNT', 1452); 22:00:30 2781 22:00:30 2782 function REGEXP_COUNT(srcstr CLOB CHARACTER SET ANY_CS, 22:00:30 2783 pattern VARCHAR2 CHARACTER SET srcstr%CHARSET, 22:00:30 2784 position INTEGER := 1, 22:00:30 2785 modifier VARCHAR2 DEFAULT NULL) 22:00:30 2786 return INTEGER; 22:00:30 2787 pragma FIPSFLAG('REGEXP_COUNT', 1452); 22:00:30 2788 22:00:30 2789 -- 47322: JSON 22:00:30 2790 -- Because of the variety of inputs and outputs, this dummy function is used 22:00:30 2791 -- for all JSON operations. The name (with the space) is to avoid name 22:00:30 2792 -- capture. 22:00:30 2793 function " SYS$STANDARD_JSON" return VARCHAR2; 22:00:30 2794 22:00:30 2795 --#### All user-visible declarations should precede this point. The 22:00:30 2796 --#### following are implementation-oriented pragmas that may need 22:00:30 2797 --#### editing in the future; we would prefer to be able to edit them 22:00:30 2798 --#### without affecting the rft numbering of user-visible items. 22:00:30 2799 22:00:30 2800 --#### interface pragmas 22:00:30 2801 22:00:30 2802 --#### Note that for any ICD which maps directly to a PVM 22:00:30 2803 --#### Opcode MUST be mapped to pes_dummy. 22:00:30 2804 --#### An ICD which invokes another ICD by flipping operands is 22:00:30 2805 --#### mapped to pes_flip, and an ICD whose result is the inverse of 22:00:30 2806 --#### another ICD is mapped to pes_invert 22:00:30 2807 --#### New ICDs should be placed at the end of this list, and a 22:00:30 2808 --#### corresponding entry must be made in the ICD table in pdz7 22:00:30 2809 22:00:30 2810 PRAGMA interface(c,length,"pes_dummy",1); 22:00:30 2811 PRAGMA interface(c,substr,"pes_dummy",1); 22:00:30 2812 PRAGMA interface(c,instr,"pesist",1); 22:00:30 2813 PRAGMA interface(c,UPPER,"pesupp",1); 22:00:30 2814 PRAGMA interface(c,LOWER,"peslow",1); 22:00:30 2815 PRAGMA interface(c,ASCII,"pesasc"); 22:00:30 2816 PRAGMA interface(c,ASCIISTR,"pesastr"); 22:00:30 2817 PRAGMA interface(c,UNISTR,"pesustr"); 22:00:30 2818 PRAGMA interface(c,CHR,"peschr"); 22:00:30 2819 PRAGMA interface(c," SYS$STANDARD_CHR","peschr"); 22:00:30 2820 PRAGMA interface(c,INITCAP,"pesicp"); 22:00:30 2821 PRAGMA interface(c,LPAD,"peslpd",1); 22:00:30 2822 PRAGMA interface(c,LPAD,"peslpd",2); 22:00:30 2823 PRAGMA interface(c,RPAD,"pesrpd",1); 22:00:30 2824 PRAGMA interface(c,RPAD,"pesrpd",2); 22:00:30 2825 PRAGMA interface(c,REPLACE,"pesrep",1); 22:00:30 2826 PRAGMA interface(c,LTRIM,"pesltr",1); 22:00:30 2827 PRAGMA interface(c,LTRIM,"pesltr",2); 22:00:30 2828 PRAGMA interface(c,RTRIM,"pesrtr",1); 22:00:30 2829 PRAGMA interface(c,RTRIM,"pesrtr",2); 22:00:30 2830 PRAGMA interface(c,'LIKE',"peslik",1); 22:00:30 2831 PRAGMA interface(c,'LIKE',"pesli2",2); 22:00:30 2832 PRAGMA interface(c,ABS,"pes_dummy",1); 22:00:30 2833 PRAGMA interface(c,'REM',"pesmod", 1); 22:00:30 2834 PRAGMA interface(c,'MOD',"pesmod", 1); 22:00:30 2835 PRAGMA interface(c,floor,"pesflo", 1); 22:00:30 2836 PRAGMA interface(c,CEIL,"pescei", 1); 22:00:30 2837 PRAGMA interface (c, SQRT, "pessqt", 1); 22:00:30 2838 PRAGMA interface(c,SIGN,"pessgn", 1); 22:00:30 2839 PRAGMA interface(c,cos,"pescos", 1); 22:00:30 2840 PRAGMA interface(c,sin,"pessin",1); 22:00:30 2841 PRAGMA interface(c,TAN,"pestan",1); 22:00:30 2842 PRAGMA interface(c,COSH,"pescsh",1); 22:00:30 2843 PRAGMA interface(c,SINH,"pessnh",1); 22:00:30 2844 PRAGMA interface(c,TANH,"pestnh",1); 22:00:30 2845 PRAGMA interface(c,EXP,"pesexp",1); 22:00:30 2846 PRAGMA interface(c,LN,"pesln",1); 22:00:30 2847 PRAGMA interface(c,BITAND,"pesbtd",1); 22:00:30 2848 PRAGMA interface(c,BITAND,"pesbtdn",2); 22:00:30 2849 PRAGMA interface(c,LOG,"peslog",1); 22:00:30 2850 PRAGMA interface(c,TRUNC,"pestru",1); 22:00:30 2851 PRAGMA interface(c,ROUND,"pesrnd",1); 22:00:30 2852 PRAGMA interface(c,POWER,"pespow",1); 22:00:30 2853 PRAGMA interface(c,NEW_TIME,"pesnwt"); 22:00:30 2854 PRAGMA interface(c,TO_DATE,"pesc2d",4); 22:00:30 2855 PRAGMA interface(c,TO_NUMBER,"pesc2n",3); 22:00:30 2856 PRAGMA interface(c,TO_NUMBER,"pesc2n",4); 22:00:30 2857 PRAGMA interface(c,'>=',"pes_flip",5); 22:00:30 2858 PRAGMA interface(c,'>',"pes_flip",5); 22:00:30 2859 PRAGMA interface(c,'<=',"peszle",5); 22:00:30 2860 PRAGMA interface(c,'<',"peszlt",5); -- ICD #50 22:00:30 2861 PRAGMA interface(c,'=',"peszeq",5); 22:00:30 2862 PRAGMA interface(c,'!=',"pes_invert",5); 22:00:30 2863 PRAGMA interface(c,nlssort,"pesxco",2); 22:00:30 2864 PRAGMA interface(c,NLS_UPPER,"pesxup",1); 22:00:30 2865 PRAGMA interface(c,NLS_UPPER,"peslcnup",3); -- LOB NLS_UPPER 22:00:30 2866 PRAGMA interface(c,NLS_UPPER,"peslcnup",4); -- LOB NLS_UPPER 22:00:30 2867 PRAGMA interface(c,NLS_LOWER,"pesxlo",1); 22:00:30 2868 PRAGMA interface(c,NLS_LOWER,"peslcnlr",3); -- LOB NLS_LOWER 22:00:30 2869 PRAGMA interface(c,NLS_LOWER,"peslcnlr",4); -- LOB NLS_LOWER 22:00:30 2870 PRAGMA interface(c,NLS_INITCAP,"pesxcp",1); 22:00:30 2871 PRAGMA interface(c,lengthb,"pes_dummy",1); 22:00:30 2872 PRAGMA interface(c,substrb,"pes_dummy",1); 22:00:30 2873 PRAGMA interface(c,instrb,"pesxis",1); 22:00:30 2874 PRAGMA interface(c,TO_SINGLE_BYTE, "pesxsi"); 22:00:30 2875 PRAGMA interface(c,TO_MULTI_BYTE,"pesxmu"); 22:00:30 2876 PRAGMA interface(c,TO_CHAR,"pesd2c",5); 22:00:30 2877 PRAGMA interface(c,TO_CHAR,"pesn2c",6); 22:00:30 2878 PRAGMA interface(c,TO_NCHAR,"pesd2c",4); 22:00:30 2879 PRAGMA interface(c,TO_NCHAR,"pesn2c",5); 22:00:30 2880 PRAGMA interface(c," SYS$STANDARD_TRANSLATE","pesxcs"); 22:00:30 2881 PRAGMA interface(c,ATAN,"pesatan",1); 22:00:30 2882 PRAGMA interface(c,EMPTY_CLOB,"peslcem"); 22:00:30 2883 PRAGMA interface(c,EMPTY_BLOB,"peslbem"); 22:00:30 2884 PRAGMA interface(c,BFILENAME,"pesfnm"); 22:00:30 2885 PRAGMA interface(c,TO_TIME,"pes3tm",2); 22:00:30 2886 PRAGMA interface(c,TO_TIME,"pes3tm",3); 22:00:30 2887 PRAGMA interface(c,TO_TIMESTAMP,"pes3ts",2); 22:00:30 2888 PRAGMA interface(c,TO_TIMESTAMP,"pes3ts",3); 22:00:30 2889 PRAGMA interface(c,TO_TIMESTAMP_TZ,"pes3tp",2); 22:00:30 2890 PRAGMA interface(c,TO_TIMESTAMP_TZ,"pes3tp",3); 22:00:30 2891 PRAGMA interface(c,TO_TIME_TZ,"pes3te",2); 22:00:30 2892 PRAGMA interface(c,TO_TIME_TZ,"pes3te",3); 22:00:30 2893 PRAGMA interface(c,TO_DSINTERVAL,"pes2dsi",2); 22:00:30 2894 PRAGMA interface(c,SYS_AT_TIME_ZONE,"pesatz",1); 22:00:30 2895 PRAGMA interface(c,SYS_AT_TIME_ZONE,"pesatz",2); 22:00:30 2896 PRAGMA interface(c,SESSIONTIMEZONE,"pesstz",1); 22:00:30 2897 PRAGMA interface(c," SYS$STANDARD_TRIM","pestrim",1); 22:00:30 2898 PRAGMA interface(c," SYS$STANDARD_TRIM","pestrim",2); 22:00:30 2899 PRAGMA interface(c," SYS$STANDARD_TRIM","pestrim",3); 22:00:30 2900 PRAGMA interface(c,TRIM,"pestrim",1); 22:00:30 2901 -- Datetime addition 22:00:30 2902 PRAGMA interface(c,'+',"pesati",5); -- +(tsp, iym) return tsp 22:00:30 2903 PRAGMA interface(c,'+',"pesati",6); -- +(tsp, ids) return tsp 22:00:30 2904 PRAGMA interface(c,'+',"pesati",7); -- +(tsz, iym) return tsz 22:00:30 2905 PRAGMA interface(c,'+',"pesati",8); -- +(tsz, ids) return tsz 22:00:30 2906 PRAGMA interface(c,'+',"pesati",9); -- +(tim, ids) return tim 22:00:30 2907 PRAGMA interface(c,'+',"pesati",10); -- +(tmz, ids) return tmz 22:00:30 2908 PRAGMA interface(c,'+',"pesadi",11); -- +(dat, iym) return dat 22:00:30 2909 PRAGMA interface(c,'+',"pesadi",12); -- +(dat, ids) return dat 22:00:30 2910 PRAGMA interface(c,'+',"pes_flip",13); -- +(iym, tsp) return tsp 22:00:30 2911 PRAGMA interface(c,'+',"pes_flip",14); -- +(iym, tsz) return tsz -- ICD #100 22:00:30 2912 PRAGMA interface(c,'+',"pes_flip",15); -- +(iym, dat) return dat 22:00:30 2913 PRAGMA interface(c,'+',"pes_flip",16); -- +(ids, tsp) return tsp 22:00:30 2914 PRAGMA interface(c,'+',"pes_flip",17); -- +(ids, tsz) return tsz 22:00:30 2915 PRAGMA interface(c,'+',"pes_flip",18); -- +(ids, tim) return tim 22:00:30 2916 PRAGMA interface(c,'+',"pes_flip",19); -- +(ids, tmz) return tmz 22:00:30 2917 PRAGMA interface(c,'+',"pes_flip",20); -- +(ids, dat) return dat 22:00:30 2918 PRAGMA interface(c,'+',"pesaii",21); -- +(ids, ids) return ids 22:00:30 2919 PRAGMA interface(c,'+',"pesaii",22); -- +(iym, iym) return iym 22:00:30 2920 PRAGMA interface(c,'+',"pesati",23); -- +(ltz, iym) return ltz 22:00:30 2921 PRAGMA interface(c,'+',"pesati",24); -- +(ltz, ids) return ltz 22:00:30 2922 PRAGMA interface(c,'+',"pes_flip",25);-- +(iym, ltz) return ltz 22:00:30 2923 PRAGMA interface(c,'+',"pes_flip",26);-- +(ids, ltz) return ltz 22:00:30 2924 -- Datetime subtraction 22:00:30 2925 PRAGMA interface(c,'-',"pessti",6); -- -(tsp, iym) return tsp 22:00:30 2926 PRAGMA interface(c,'-',"pessti",7); -- -(tsp, ids) return tsp 22:00:30 2927 PRAGMA interface(c,'-',"pessti",8); -- -(tsz, iym) return tsz 22:00:30 2928 PRAGMA interface(c,'-',"pessti",9); -- -(tsz, ids) return tsz 22:00:30 2929 PRAGMA interface(c,'-',"pessti",10); -- -(tim, ids) return tim 22:00:30 2930 PRAGMA interface(c,'-',"pessti",11); -- -(tmz, ids) return tmz 22:00:30 2931 PRAGMA interface(c,'-',"pessdi",12); -- -(dat, iym) return dat 22:00:30 2932 PRAGMA interface(c,'-',"pessdi",13); -- -(dat, ids) return dat 22:00:30 2933 PRAGMA interface(c,'-',"pessii",14); -- -(iym, iym) return iym 22:00:30 2934 PRAGMA interface(c,'-',"pessii",15); -- -(ids, ids) return ids 22:00:30 2935 PRAGMA interface(c,'-',"pessttds",16); -- -(tim, tim) return ids 22:00:30 2936 PRAGMA interface(c,'-',"pessttds",17); -- -(tsp, tsp) return ids 22:00:30 2937 PRAGMA interface(c,'-',"pessttds",18); -- -(tmz, tmz) return ids 22:00:30 2938 PRAGMA interface(c,'-',"pessttds",19); -- -(tsz, tsz) return ids 22:00:30 2939 PRAGMA interface(c,'-',"pessti",20); -- -(ltz, iym) return iym 22:00:30 2940 PRAGMA interface(c,'-',"pessti",21); -- -(ltz, ids) return ids 22:00:30 2941 PRAGMA interface(c,'-',"pessttds",22); -- -(ltz, ltz) return ids 22:00:30 2942 PRAGMA interface(c," SYS$DSINTERVALSUBTRACT","pessttds",1); 22:00:30 2943 PRAGMA interface(c," SYS$DSINTERVALSUBTRACT","pessttds",2); 22:00:30 2944 PRAGMA interface(c," SYS$DSINTERVALSUBTRACT","pessttds",3); 22:00:30 2945 PRAGMA interface(c," SYS$DSINTERVALSUBTRACT","pessttds",4); 22:00:30 2946 PRAGMA interface(c," SYS$DSINTERVALSUBTRACT","pessddds",5); 22:00:30 2947 PRAGMA interface(c," SYS$DSINTERVALSUBTRACT","pessttds",6); 22:00:30 2948 PRAGMA interface(c," SYS$YMINTERVALSUBTRACT","pessttym",1); 22:00:30 2949 PRAGMA interface(c," SYS$YMINTERVALSUBTRACT","pessttym",2); 22:00:30 2950 PRAGMA interface(c," SYS$YMINTERVALSUBTRACT","pessddym",3); 22:00:30 2951 PRAGMA interface(c," SYS$YMINTERVALSUBTRACT","pessttym",4); 22:00:30 2952 -- Datetime multiplication 22:00:30 2953 PRAGMA interface(c,'*',"pesmni",2); -- *(num, iym) return iym 22:00:30 2954 PRAGMA interface(c,'*',"pesmni",3); -- *(num, ids) return ids 22:00:30 2955 PRAGMA interface(c,'*',"pes_flip",4); -- *(iym, num) return iym 22:00:30 2956 PRAGMA interface(c,'*',"pes_flip",5); -- *(ids, num) return ids 22:00:30 2957 -- Datetime division 22:00:30 2958 PRAGMA interface(c,'/',"pesdvin",2); -- /(iym, num) return iym 22:00:30 2959 PRAGMA interface(c,'/',"pesdvin",3); -- /(ids, num) return ids 22:00:30 2960 -- TIME 22:00:30 2961 PRAGMA interface(c,'=',"pes_dummy",9); 22:00:30 2962 PRAGMA interface(c,'!=',"pes_invert",9); 22:00:30 2963 PRAGMA interface(c,'>',"pes_flip",8); 22:00:30 2964 PRAGMA interface(c,'<',"pes_dummy",8); 22:00:30 2965 PRAGMA interface(c,'>=',"pes_flip",8); -- ICD #150 22:00:30 2966 PRAGMA interface(c,'<=',"pes_dummy",8); 22:00:30 2967 -- TIME WITH TIME ZONE 22:00:30 2968 PRAGMA interface(c,'=',"pes_dummy",10); 22:00:30 2969 PRAGMA interface(c,'!=',"pes_invert",10); 22:00:30 2970 PRAGMA interface(c,'>',"pes_flip",9); 22:00:30 2971 PRAGMA interface(c,'<',"pes_dummy",9); 22:00:30 2972 PRAGMA interface(c,'>=',"pes_flip",9); 22:00:30 2973 PRAGMA interface(c,'<=',"pes_dummy",9); 22:00:30 2974 -- TIMESTAMP 22:00:30 2975 PRAGMA interface(c,'=',"pes_dummy",11); 22:00:30 2976 PRAGMA interface(c,'!=',"pes_invert",11); 22:00:30 2977 PRAGMA interface(c,'>',"pes_flip",10); 22:00:30 2978 PRAGMA interface(c,'<',"pes_dummy",10); 22:00:30 2979 PRAGMA interface(c,'>=',"pes_flip",10); 22:00:30 2980 PRAGMA interface(c,'<=',"pes_dummy",10); 22:00:30 2981 -- INTERVAL YEAR TO MONTH 22:00:30 2982 PRAGMA interface(c,'=',"pes_dummy",12); 22:00:30 2983 PRAGMA interface(c,'!=',"pes_invert",12); 22:00:30 2984 PRAGMA interface(c,'>',"pes_flip",11); 22:00:30 2985 PRAGMA interface(c,'<',"pes_dummy",11); 22:00:30 2986 PRAGMA interface(c,'>=',"pes_flip",11); 22:00:30 2987 PRAGMA interface(c,'<=',"pes_dummy",11); 22:00:30 2988 -- INTERVAL DAY TO SECOND 22:00:30 2989 PRAGMA interface(c,'=',"pes_dummy",13); 22:00:30 2990 PRAGMA interface(c,'!=',"pes_invert",13); 22:00:30 2991 PRAGMA interface(c,'>',"pes_flip",12); 22:00:30 2992 PRAGMA interface(c,'<',"pes_dummy",12); 22:00:30 2993 PRAGMA interface(c,'>=',"pes_flip",12); 22:00:30 2994 PRAGMA interface(c,'<=',"pes_dummy",12); 22:00:30 2995 -- TIMESTAMP_TZ_UNCONSTRAINED 22:00:30 2996 PRAGMA interface(c,'=',"pes_dummy",14); 22:00:30 2997 PRAGMA interface(c,'!=',"pes_invert",14); 22:00:30 2998 PRAGMA interface(c,'>',"pes_flip",13); 22:00:30 2999 PRAGMA interface(c,'<',"pes_dummy",13); 22:00:30 3000 PRAGMA interface(c,'>=',"pes_flip",13); 22:00:30 3001 PRAGMA interface(c,'<=',"pes_dummy",13); 22:00:30 3002 -- TIMESTAMP WITH LOCAL TIME ZONE 22:00:30 3003 PRAGMA interface(c,'=',"pes_dummy",15); 22:00:30 3004 PRAGMA interface(c,'!=',"pes_invert",15); 22:00:30 3005 PRAGMA interface(c,'>',"pes_flip",14); 22:00:30 3006 PRAGMA interface(c,'<',"pes_dummy",14); 22:00:30 3007 PRAGMA interface(c,'>=',"pes_flip",14); 22:00:30 3008 PRAGMA interface(c,'<=',"pes_dummy",14); 22:00:30 3009 -- Other datetime functions 22:00:30 3010 PRAGMA interface(c,'CURRENT_DATE',"pescdt",1); 22:00:30 3011 PRAGMA interface(c,'CURRENT_TIME',"pesctm",1); 22:00:30 3012 PRAGMA interface(c,'CURRENT_TIMESTAMP',"pescts",1); 22:00:30 3013 -- Internal calls to evaluate datetime/interval literals without NLS parms. 22:00:30 3014 PRAGMA interface(c,SYS_LITERALTOYMINTERVAL,"pesc2ymi",1); 22:00:30 3015 PRAGMA interface(c,SYS_LITERALTODSINTERVAL,"pesc2dsi",1); 22:00:30 3016 PRAGMA interface(c,SYS_LITERALTOTIME,"pesc2tim",1); 22:00:30 3017 PRAGMA interface(c,SYS_LITERALTOTZTIME,"pesc2tim",1); 22:00:30 3018 PRAGMA interface(c,SYS_LITERALTOTIMESTAMP,"pesc2tsp",1); 22:00:30 3019 PRAGMA interface(c,SYS_LITERALTOTZTIMESTAMP,"pesc2tsp",1); 22:00:30 3020 PRAGMA interface(c,SYS_LITERALTODATE,"pesc2date",1); 22:00:30 3021 -- extract(field from expr) 22:00:30 3022 PRAGMA interface(c," SYS$EXTRACT_FROM","pesefd",1); 22:00:30 3023 PRAGMA interface(c," SYS$EXTRACT_FROM","pesefd",2); 22:00:30 3024 PRAGMA interface(c," SYS$EXTRACT_FROM","pesefd",3); -- ICD #200 22:00:30 3025 PRAGMA interface(c," SYS$EXTRACT_FROM","pesefd",4); 22:00:30 3026 PRAGMA interface(c," SYS$EXTRACT_FROM","pesefd",5); 22:00:30 3027 PRAGMA interface(c," SYS$EXTRACT_FROM","pesefdt",6); 22:00:30 3028 PRAGMA interface(c," SYS$EXTRACT_FROM","pesefi",7); 22:00:30 3029 PRAGMA interface(c," SYS$EXTRACT_FROM","pesefi",8); 22:00:30 3030 -- datetime is null 22:00:30 3031 PRAGMA interface(c,'IS NULL',"pes_dummy",15); -- time 22:00:30 3032 PRAGMA interface(c,'IS NULL',"pes_dummy",16); -- time wtz 22:00:30 3033 PRAGMA interface(c,'IS NULL',"pes_dummy",17); -- timestamp 22:00:30 3034 PRAGMA interface(c,'IS NULL',"pes_dummy",18); -- timestamp wtz 22:00:30 3035 PRAGMA interface(c,'IS NULL',"pes_dummy",19); -- timestamp lwtz 22:00:30 3036 PRAGMA interface(c,'IS NULL',"pes_dummy",20); -- interval ym 22:00:30 3037 PRAGMA interface(c,'IS NULL',"pes_dummy",21); -- interval ds 22:00:30 3038 22:00:30 3039 -- 8.2 LOB Built-in Functions 22:00:30 3040 PRAGMA interface(c,length, "peslcln",2); -- LOB LENGTH 22:00:30 3041 PRAGMA interface(c,lengthb,"peslclb",2); -- LOB LENGTHB 22:00:30 3042 PRAGMA interface(c,substr, "peslcst",2); -- LOB SUBSTR 22:00:30 3043 PRAGMA interface(c,substrb,"peslcsb",2); -- LOB SUBSTRB 22:00:30 3044 PRAGMA interface(c,instr, "peslcin",2); -- LOB INSTR 22:00:30 3045 PRAGMA interface(c,instrb, "peslcib",2); -- LOB INSTRB 22:00:30 3046 PRAGMA interface(c,'||', "peslcct",2); -- LOB '||' 22:00:30 3047 PRAGMA interface(c,concat, "peslcct",2); -- LOB CONCAT 22:00:30 3048 PRAGMA interface(c,lpad, "peslclp",3); -- LOB LPAD 22:00:30 3049 PRAGMA interface(c,lpad, "peslclp",4); -- LOB LPAD 22:00:30 3050 PRAGMA interface(c,rpad, "peslcrp",3); -- LOB RPAD 22:00:30 3051 PRAGMA interface(c,rpad, "peslcrp",4); -- LOB RPAD 22:00:30 3052 PRAGMA interface(c,lower, "peslclr",2); -- LOB LOWER 22:00:30 3053 PRAGMA interface(c,upper, "peslcup",2); -- LOB UPPER 22:00:30 3054 PRAGMA interface(c,ltrim, "peslclm",3); -- LOB LTRIM 22:00:30 3055 PRAGMA interface(c,ltrim, "peslclm",4); -- LOB LTRIM 22:00:30 3056 PRAGMA interface(c,rtrim, "peslcrm",3); -- LOB RTRIM 22:00:30 3057 PRAGMA interface(c,rtrim, "peslcrm",4); -- LOB RTRIM 22:00:30 3058 PRAGMA interface(c,trim, "peslctr",2); -- LOB TRIM 22:00:30 3059 PRAGMA interface(c," SYS$STANDARD_TRIM","peslctr",4); -- LOB TRIM 22:00:30 3060 PRAGMA interface(c," SYS$STANDARD_TRIM","peslctr",5); -- LOB TRIM 22:00:30 3061 PRAGMA interface(c," SYS$STANDARD_TRIM","peslctr",6); -- LOB TRIM 22:00:30 3062 PRAGMA interface(c,'LIKE', "peslclk",3); -- LOB LIKE 22:00:30 3063 PRAGMA interface(c,'LIKE', "peslcl2",4); -- LOB LIKE 22:00:30 3064 PRAGMA interface(c,nvl,"peslcnl",18); -- LOB NVL 22:00:30 3065 PRAGMA interface(c,replace, "peslcrl",2); -- LOB REPLACE 22:00:30 3066 22:00:30 3067 -- LOB Relational Operators 22:00:30 3068 -- LHS: CLOB, RHS:CLOB 22:00:30 3069 PRAGMA interface(c,'=' ,"pes_dummy",16); -- LOB '=' 22:00:30 3070 PRAGMA interface(c,'!=',"pes_invert",16); -- LOB '!=' 22:00:30 3071 PRAGMA interface(c,'>' ,"pes_flip",15); -- LOB '>' 22:00:30 3072 PRAGMA interface(c,'<' ,"pes_dummy",15); -- LOB '<' 22:00:30 3073 PRAGMA interface(c,'>=',"pes_flip",15); -- LOB '>=' 22:00:30 3074 PRAGMA interface(c,'<=',"pes_dummy",15); -- LOB '<=' 22:00:30 3075 -- LHS: CLOB, RHS:VARCHAR2 22:00:30 3076 PRAGMA interface(c,'=' ,"pesleq2",17); -- LOB '=' 22:00:30 3077 PRAGMA interface(c,'!=',"pes_invert",17); -- LOB '!=' 22:00:30 3078 PRAGMA interface(c,'>' ,"pes_flip",16); -- LOB '>' 22:00:30 3079 PRAGMA interface(c,'<' ,"pesllt2",16); -- LOB '<' 22:00:30 3080 PRAGMA interface(c,'>=',"pes_flip",16); -- LOB '>=' 22:00:30 3081 PRAGMA interface(c,'<=',"peslle2",16); -- LOB '<=' -- ICD #250 22:00:30 3082 -- LHS: VARCHAR2, RHS:CLOB 22:00:30 3083 PRAGMA interface(c,'=' ,"pes_flip",18); -- LOB '=' 22:00:30 3084 PRAGMA interface(c,'!=',"pes_flip",18); -- LOB '!=' 22:00:30 3085 PRAGMA interface(c,'>' ,"pes_flip",17); -- LOB '>' 22:00:30 3086 PRAGMA interface(c,'<' ,"pesllt3",17); -- LOB '<' 22:00:30 3087 PRAGMA interface(c,'>=',"pes_flip",17); -- LOB '>=' 22:00:30 3088 PRAGMA interface(c,'<=',"peslle3",17); -- LOB '<=' 22:00:30 3089 22:00:30 3090 PRAGMA interface(c,length, "peslbln",3); -- BLOB LENGTH 22:00:30 3091 PRAGMA interface(c,lengthb,"peslblb",3); -- BLOB LENGTHB 22:00:30 3092 -- End of 8.2 LOB Built-in Functions 22:00:30 3093 22:00:30 3094 22:00:30 3095 PRAGMA interface(c,tz_offset,"pestzo",1); 22:00:30 3096 PRAGMA interface(c,from_tz,"pesftz",1); 22:00:30 3097 22:00:30 3098 PRAGMA interface(c,ISNCHAR,"pesinc", 1); 22:00:30 3099 22:00:30 3100 PRAGMA interface(c,CONVERT,"pescnv", 1); 22:00:30 3101 PRAGMA interface(c,CONVERT,"pescnv", 2); 22:00:30 3102 PRAGMA interface(c,CONVERT,"peslccnv", 3); -- LOB CONVERT 22:00:30 3103 PRAGMA interface(c,CONVERT,"peslccnv", 4); -- LOB CONVERT 22:00:30 3104 22:00:30 3105 PRAGMA interface(c," SYS$EXTRACT_STRING_FROM","pesefdrvc2",1); 22:00:30 3106 PRAGMA interface(c," SYS$EXTRACT_STRING_FROM","pesefdrvc2",2); 22:00:30 3107 PRAGMA interface(c," SYS$EXTRACT_STRING_FROM","pesefdrvc2",3); 22:00:30 3108 22:00:30 3109 PRAGMA interface(c,TO_CHAR,"pesdtm2c",7); -- datetime 22:00:30 3110 PRAGMA interface(c,TO_CHAR,"pesdtm2c",8); 22:00:30 3111 PRAGMA interface(c,TO_CHAR,"pesdtm2c",9); 22:00:30 3112 PRAGMA interface(c,TO_CHAR,"pesdtm2c",10); 22:00:30 3113 PRAGMA interface(c,TO_CHAR,"pesdtm2c",11); 22:00:30 3114 PRAGMA interface(c,TO_CHAR,"pesdtm2c",12); 22:00:30 3115 PRAGMA interface(c,TO_CHAR,"pesdtm2c",13); 22:00:30 3116 PRAGMA interface(c,TO_CHAR,"pesdtm2c",14); 22:00:30 3117 PRAGMA interface(c,TO_CHAR,"pesdtm2c",15); 22:00:30 3118 PRAGMA interface(c,TO_CHAR,"pesdtm2c",16); 22:00:30 3119 PRAGMA interface(c,TO_CHAR,"pesitv2c",17); -- interval 22:00:30 3120 PRAGMA interface(c,TO_CHAR,"pesitv2c",18); 22:00:30 3121 PRAGMA interface(c,TO_CHAR,"pesitv2c",19); 22:00:30 3122 PRAGMA interface(c,TO_CHAR,"pesitv2c",20); 22:00:30 3123 22:00:30 3124 --#### new_names pragmas 22:00:30 3125 22:00:30 3126 -- This is an internal pragma that restricts the use 22:00:30 3127 -- of particular new entries in package standard. 22:00:30 3128 -- It is only valid in package standard. 22:00:30 3129 -- Note that left out of the 8.1.5 set are non datetime 22:00:30 3130 -- entries urowid, "UROWID ", self_is_null and trim. 22:00:30 3131 22:00:30 3132 pragma new_names('8.1.5', 22:00:30 3133 time,"TIME WITH TIME ZONE", 22:00:30 3134 timestamp,"TIMESTAMP WITH TIME ZONE", 22:00:30 3135 "INTERVAL DAY TO SECOND", 22:00:30 3136 "INTERVAL YEAR TO MONTH", 22:00:30 3137 to_time, to_timestamp, 22:00:30 3138 to_time_tz, to_timestamp_tz, 22:00:30 3139 " SYS$DSINTERVALSUBTRACT", 22:00:30 3140 " SYS$YMINTERVALSUBTRACT", 22:00:30 3141 to_yminterval,to_dsinterval, 22:00:30 3142 NUMTOYMINTERVAL, NUMTODSINTERVAL, 22:00:30 3143 current_date, 22:00:30 3144 current_time,current_timestamp); 22:00:30 3145 22:00:30 3146 pragma new_names('8.1.6', 22:00:30 3147 dbtimezone, sessiontimezone, localtimestamp, 22:00:30 3148 localtime, 22:00:30 3149 cube, rollup, grouping, "TIMESTAMP WITH LOCAL TIME ZONE"); 22:00:30 3150 22:00:30 3151 -- Should there be a 8.2 new names pragma ? 22:00:30 3152 22:00:30 3153 -- 8.2 UCS2/UCS4/Complete Built-in Functions 22:00:30 3154 22:00:30 3155 PRAGMA interface(c,INSTR2,"pesist2",1); 22:00:30 3156 PRAGMA interface(c,INSTR4,"pesist4",1); 22:00:30 3157 PRAGMA interface(c,INSTRC,"pesistc",1); 22:00:30 3158 22:00:30 3159 PRAGMA interface(c,LENGTH2,"peslen2",1); 22:00:30 3160 PRAGMA interface(c,LENGTH4,"peslen4",1); 22:00:30 3161 PRAGMA interface(c,LENGTHC,"peslenc",1); 22:00:30 3162 22:00:30 3163 PRAGMA interface(c,LIKE2,"peslik2",1); 22:00:30 3164 PRAGMA interface(c,LIKE2,"pesli22",2); 22:00:30 3165 PRAGMA interface(c,LIKE4,"peslik4",1); 22:00:30 3166 PRAGMA interface(c,LIKE4,"pesli42",2); 22:00:30 3167 PRAGMA interface(c,LIKEC,"peslikc",1); 22:00:30 3168 PRAGMA interface(c,LIKEC,"peslic2",2); 22:00:30 3169 22:00:30 3170 PRAGMA interface(c,SUBSTR2,"pes_dummy",1); 22:00:30 3171 PRAGMA interface(c,SUBSTR4,"pes_dummy",1); 22:00:30 3172 PRAGMA interface(c,SUBSTRC,"pes_dummy",1); 22:00:30 3173 PRAGMA interface(c,SYS_EXTRACT_UTC,"pessexu"); 22:00:30 3174 PRAGMA interface(c,COMPOSE,"pescomp"); 22:00:30 3175 PRAGMA interface(c,DECOMPOSE,"pesdcmp"); 22:00:30 3176 22:00:30 3177 22:00:30 3178 22:00:30 3179 -- End of 8.2 UCS2/UCS4/Complete Built-in Functions 22:00:30 3180 22:00:30 3181 -- Begin REGEXP support (10iR1) -- 22:00:30 3182 PRAGMA interface(c,regexp_like, "pes_dummy",1); 22:00:30 3183 PRAGMA interface(c,regexp_instr, "pes_dummy",1); -- ICD #300 22:00:30 3184 PRAGMA interface(c,regexp_substr, "pes_dummy",1); 22:00:30 3185 PRAGMA interface(c,regexp_replace, "pes_dummy",1); 22:00:30 3186 PRAGMA interface(c,regexp_count, "pes_dummy",1); 22:00:30 3187 PRAGMA interface(c,regexp_like, "pes_dummy",2); -- LOB REGEXP_LIKE 22:00:30 3188 PRAGMA interface(c,regexp_instr, "pes_dummy",2); -- LOB REGEXP_INSTR 22:00:30 3189 PRAGMA interface(c,regexp_substr, "pes_dummy",2); -- LOB REGEXP_SUBSTR 22:00:30 3190 PRAGMA interface(c,regexp_replace, "pes_dummy",2); -- LOB REGEXP_REPLACE 22:00:30 3191 PRAGMA interface(c,regexp_count, "pes_dummy",2); -- LOB REGEXP_COUNT 22:00:30 3192 PRAGMA interface(c,regexp_replace, "pes_dummy",3); -- LOB REGEXP_REPLACE 22:00:30 3193 22:00:30 3194 -- End of REGEXP Built-in Functions -- 22:00:30 3195 22:00:30 3196 22:00:30 3197 -- 10i Binary Floating-point Built-in Functions 22:00:30 3198 22:00:30 3199 PRAGMA interface(c,'IS NAN',"pesnanf",2); 22:00:30 3200 PRAGMA interface(c,'IS NAN',"pesnand",3); 22:00:30 3201 PRAGMA interface(c,'IS INFINITE',"pesinf",1); 22:00:30 3202 PRAGMA interface(c,'IS INFINITE',"pesinff",2); 22:00:30 3203 PRAGMA interface(c,'IS INFINITE',"pesinfd",3); 22:00:30 3204 PRAGMA interface(c,TO_BINARY_FLOAT,"pesc2flt",2); 22:00:30 3205 PRAGMA interface(c,TO_BINARY_FLOAT,"pesc2flt",3); 22:00:30 3206 PRAGMA interface(c,TO_BINARY_DOUBLE,"pesc2dbl",2); 22:00:30 3207 PRAGMA interface(c,TO_BINARY_DOUBLE,"pesc2dbl",3); 22:00:30 3208 PRAGMA interface(c,TO_CHAR,"pesflt2c",21); 22:00:30 3209 PRAGMA interface(c,TO_CHAR,"pesdbl2c",22); 22:00:30 3210 PRAGMA interface(c,TO_CHAR,"pesflt2c",23); 22:00:30 3211 PRAGMA interface(c,TO_CHAR,"pesdbl2c",24); 22:00:30 3212 PRAGMA interface(c,TO_NCHAR,"pesflt2c",6); 22:00:30 3213 PRAGMA interface(c,TO_NCHAR,"pesdbl2c",7); 22:00:30 3214 PRAGMA interface(c,TO_NCHAR,"pesflt2c",8); 22:00:30 3215 PRAGMA interface(c,TO_NCHAR,"pesdbl2c",9); 22:00:30 3216 PRAGMA interface(c,'REMAINDER',"pesrem", 1); 22:00:30 3217 PRAGMA interface(c,REMAINDER,"pesrem", 2); 22:00:30 3218 PRAGMA interface(c,'REMAINDER',"pesremf", 3); 22:00:30 3219 PRAGMA interface(c,REMAINDER,"pesremf", 4); 22:00:30 3220 PRAGMA interface(c,'REMAINDER',"pesremd", 5); 22:00:30 3221 PRAGMA interface(c,REMAINDER,"pesremd", 6); 22:00:30 3222 PRAGMA interface(c,ABS,"pes_dummy",2); 22:00:30 3223 PRAGMA interface(c,ABS,"pes_dummy",3); 22:00:30 3224 PRAGMA interface(c,ABS,"pes_dummy",4); 22:00:30 3225 PRAGMA interface(c,ATAN,"pesatand",2); 22:00:30 3226 PRAGMA interface(c,'REM',"pesmodf", 2); 22:00:30 3227 PRAGMA interface(c,'MOD',"pesmodf", 2); 22:00:30 3228 PRAGMA interface(c,'REM',"pesmodd", 3); 22:00:30 3229 PRAGMA interface(c,'MOD',"pesmodd", 3); 22:00:30 3230 PRAGMA interface(c,floor,"pesflof", 2); 22:00:30 3231 PRAGMA interface(c,floor,"pesflod", 3); 22:00:30 3232 PRAGMA interface(c,CEIL,"pesceif", 2); 22:00:30 3233 PRAGMA interface(c,CEIL,"pesceid", 3); 22:00:30 3234 PRAGMA interface (c, SQRT, "pessqtf", 2); 22:00:30 3235 PRAGMA interface (c, SQRT, "pessqtd", 3); 22:00:30 3236 PRAGMA interface(c,SIGN,"pessgnf", 2); 22:00:30 3237 PRAGMA interface(c,SIGN,"pessgnd", 3); 22:00:30 3238 PRAGMA interface(c,SIGN,"pessgni", 4); 22:00:30 3239 PRAGMA interface(c,cos,"pescosd", 2); 22:00:30 3240 PRAGMA interface(c,sin,"pessind",2); 22:00:30 3241 PRAGMA interface(c,TAN,"pestand",2); 22:00:30 3242 PRAGMA interface(c,COSH,"pescshd",2); 22:00:30 3243 PRAGMA interface(c,SINH,"pessnhd",2); -- ICD #350 22:00:30 3244 PRAGMA interface(c,TANH,"pestnhd",2); 22:00:30 3245 PRAGMA interface(c,EXP,"pesexpd",2); 22:00:30 3246 PRAGMA interface(c,LN,"peslnd",2); 22:00:30 3247 PRAGMA interface(c,LOG,"peslogd",2); 22:00:30 3248 PRAGMA interface(c,TRUNC,"pestruf",4); 22:00:30 3249 PRAGMA interface(c,TRUNC,"pestrud",5); 22:00:30 3250 PRAGMA interface(c,TRUNC,"pestrui",6); 22:00:30 3251 PRAGMA interface(c,ROUND,"pesrndf",4); 22:00:30 3252 PRAGMA interface(c,ROUND,"pesrndd",5); 22:00:30 3253 PRAGMA interface(c,ROUND,"pesrndi",6); 22:00:30 3254 PRAGMA interface(c,POWER,"pespowd",2); 22:00:30 3255 22:00:30 3256 -- End of 10i Binary Floating-point Built-in Functions 22:00:30 3257 22:00:30 3258 -- ICDs for MULTISET 22:00:30 3259 22:00:30 3260 PRAGMA interface(c,CARDINALITY,"pesmcnt"); 22:00:30 3261 PRAGMA interface(c,'IS EMPTY',"pesmie"); 22:00:30 3262 PRAGMA interface(c,'IS NOT EMPTY',"pes_invert",1); 22:00:30 3263 -- ICDs which used to be in the body of standard, but which new COG can 22:00:30 3264 -- handle directly 22:00:30 3265 22:00:30 3266 -- NOT (some ICD) 22:00:30 3267 PRAGMA interface(c,NOT_LIKE,"pes_invert",1); 22:00:30 3268 PRAGMA interface(c,NOT_LIKE,"pes_invert",2); 22:00:30 3269 PRAGMA interface(c,NOT_LIKE,"pes_invert",3); 22:00:30 3270 PRAGMA interface(c,NOT_LIKE,"pes_invert",4); 22:00:30 3271 PRAGMA interface(c,NOT_LIKE2,"pes_invert",1); 22:00:30 3272 PRAGMA interface(c,NOT_LIKE2,"pes_invert",2); 22:00:30 3273 PRAGMA interface(c,NOT_LIKE4,"pes_invert",1); 22:00:30 3274 PRAGMA interface(c,NOT_LIKE4,"pes_invert",2); 22:00:30 3275 PRAGMA interface(c,NOT_LIKEC,"pes_invert",1); 22:00:30 3276 PRAGMA interface(c,NOT_LIKEC,"pes_invert",2); 22:00:30 3277 PRAGMA interface(c,'IS NOT NAN',"pes_invert",2); 22:00:30 3278 PRAGMA interface(c,'IS NOT NAN',"pes_invert",3); 22:00:30 3279 PRAGMA interface(c,'IS NOT INFINITE',"pes_invert",1); 22:00:30 3280 PRAGMA interface(c,'IS NOT INFINITE',"pes_invert",2); 22:00:30 3281 PRAGMA interface(c,'IS NOT INFINITE',"pes_invert",3); 22:00:30 3282 22:00:30 3283 -- datetime is not null 22:00:30 3284 PRAGMA interface(c,'IS NOT NULL',"pes_dummy",15); -- time 22:00:30 3285 PRAGMA interface(c,'IS NOT NULL',"pes_dummy",16); -- time wtz 22:00:30 3286 PRAGMA interface(c,'IS NOT NULL',"pes_dummy",17); -- timestamp 22:00:30 3287 PRAGMA interface(c,'IS NOT NULL',"pes_dummy",18); -- timestamp wtz 22:00:30 3288 PRAGMA interface(c,'IS NOT NULL',"pes_dummy",19); -- timestamp lwtz 22:00:30 3289 PRAGMA interface(c,'IS NOT NULL',"pes_dummy",20); -- interval ym 22:00:30 3290 PRAGMA interface(c,'IS NOT NULL',"pes_dummy",21); -- interval ds 22:00:30 3291 22:00:30 3292 -- Misc 22:00:30 3293 PRAGMA interface(c,'**', "pespow",1); -- number 22:00:30 3294 PRAGMA interface(c,'**', "pespowd",2); -- binary double 22:00:30 3295 PRAGMA interface(c,ACOS, "pesacosd",2); -- binary double 22:00:30 3296 PRAGMA interface(c,ASIN, "pesasind",2); -- binary double 22:00:30 3297 PRAGMA interface(c,ATAN2,"pesatn2d",2); -- binary double 22:00:30 3298 22:00:30 3299 -- All the flavors of NVL 22:00:30 3300 PRAGMA interface(c,nvl,"pes_dummy",1); -- Boolean -- ICD #400 22:00:30 3301 PRAGMA interface(c,nvl,"pes_dummy",2); -- Varchar2 22:00:30 3302 PRAGMA interface(c,nvl,"pes_dummy",3); -- Number 22:00:30 3303 PRAGMA interface(c,nvl,"pes_dummy",4); -- Date 22:00:30 3304 PRAGMA interface(c,nvl,"pes_dummy",5); -- MLSLabel 22:00:30 3305 PRAGMA interface(c,nvl,"pes_dummy",6); -- ADT 22:00:30 3306 PRAGMA interface(c,nvl,"pes_dummy",7); -- Ref ADT 22:00:30 3307 PRAGMA interface(c,nvl,"pes_dummy",8); -- Collection 22:00:30 3308 22:00:30 3309 -- Ref Cursor has problems. The MOVCR instruction needs more information than 22:00:30 3310 -- the other MOV* instructions, including the PVM register of the destination 22:00:30 3311 -- This cannot be easily supplied through the generic NVL instruction, so 22:00:30 3312 -- for now, this flavor will continue to have a real body 22:00:30 3313 -- PRAGMA interface(c,nvl,"pes_dummy",9); -- Ref Cursor 22:00:30 3314 22:00:30 3315 PRAGMA interface(c,nvl,"pes_dummy",10); -- Assoc_array 22:00:30 3316 PRAGMA interface(c,nvl,"pes_dummy",11); -- Time 22:00:30 3317 PRAGMA interface(c,nvl,"pes_dummy",12); -- Time-tz 22:00:30 3318 PRAGMA interface(c,nvl,"pes_dummy",13); -- Timestamp 22:00:30 3319 PRAGMA interface(c,nvl,"pes_dummy",14); -- Timestamp-tz 22:00:30 3320 PRAGMA interface(c,nvl,"pes_dummy",15); -- Timestamp-ltz 22:00:30 3321 PRAGMA interface(c,nvl,"pes_dummy",16); -- Intervalym 22:00:30 3322 PRAGMA interface(c,nvl,"pes_dummy",17); -- Intervalds 22:00:30 3323 -- PRAGMA interface(c,nvl,"pes_dummy",18); -- Clob (Handled above, ICD) 22:00:30 3324 PRAGMA interface(c,nvl,"pes_dummy",19); -- Opaque 22:00:30 3325 PRAGMA interface(c,nvl,"pes_dummy",20); -- Binaryfloat 22:00:30 3326 PRAGMA interface(c,nvl,"pes_dummy",21); -- Binarydouble 22:00:30 3327 PRAGMA interface(c,nvl,"pes_dummy",22); -- PLSInteger 22:00:30 3328 22:00:30 3329 -- 47322: JSON 22:00:30 3330 PRAGMA interface(c," SYS$STANDARD_JSON","pes_dummy",1); 22:00:30 3331 22:00:30 3332 -- The following pragma overrides any other setting of the timestamp, 22:00:30 3333 -- and is used so that we recognize the client-side and server-side instances 22:00:30 3334 -- of package STANDARD as being the same. Package STANDARD is special in 22:00:30 3335 -- that it is really the root of the PL/SQL dependencies graph; as such it 22:00:30 3336 -- itself doesn't ever need recompiling due to changes to things below it. 22:00:30 3337 -- The pragma mechanism used here is currently ignored except for 22:00:30 3338 -- package STANDARD, but in future may not be. Do NOT add similar pragmas 22:00:30 3339 -- to your own code as it may in future interfere with the package 22:00:30 3340 -- consistency maintenance mechanisms and could have dire results. 22:00:30 3341 22:00:30 3342 --#### timestamp pragma (please keep this last) 22:00:30 3343 pragma TIMESTAMP('2014-09-15:00:00:00'); 22:00:30 3344 end; 22:00:30 3345 22:00:30 3346 / Package created. Elapsed: 00:00:03.69 22:00:33 SQL> @?/rdbms/admin/sqlsessend.sql 22:00:33 SQL> Rem 22:00:33 SQL> Rem $Header: rdbms/admin/sqlsessend.sql /main/1 2013/03/13 13:08:33 surman Exp $ 22:00:33 SQL> Rem 22:00:33 SQL> Rem sqlsessend.sql 22:00:33 SQL> Rem 22:00:33 SQL> Rem Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. 22:00:33 SQL> Rem 22:00:33 SQL> Rem NAME 22:00:33 SQL> Rem sqlsessend.sql - SQL session end 22:00:33 SQL> Rem 22:00:33 SQL> Rem DESCRIPTION 22:00:33 SQL> Rem Any commands which should be run at the end of all oracle 22:00:33 SQL> Rem supplied scripts. 22:00:33 SQL> Rem 22:00:33 SQL> Rem NOTES 22:00:33 SQL> Rem See sqlsessstart.sql for the corresponding start script. 22:00:33 SQL> Rem 22:00:33 SQL> Rem MODIFIED (MM/DD/YY) 22:00:33 SQL> Rem surman 03/08/13 - 16462837: Common start and end scripts 22:00:33 SQL> Rem surman 03/08/13 - Created 22:00:33 SQL> Rem 22:00:33 SQL> 22:00:33 SQL> alter session set "_ORACLE_SCRIPT" = false; Session altered. Elapsed: 00:00:00.00 22:00:33 SQL> 22:00:33 SQL> 22:00:33 SQL> @@stdbody.sql 22:00:33 SQL> @@?/rdbms/admin/sqlsessstart.sql 22:00:33 SQL> Rem 22:00:33 SQL> Rem $Header: rdbms/admin/sqlsessstart.sql /main/1 2013/03/13 13:08:33 surman Exp $ 22:00:33 SQL> Rem 22:00:33 SQL> Rem sqlsessstart.sql 22:00:33 SQL> Rem 22:00:33 SQL> Rem Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. 22:00:33 SQL> Rem 22:00:33 SQL> Rem NAME 22:00:33 SQL> Rem sqlsessstart.sql - SQL session start 22:00:33 SQL> Rem 22:00:33 SQL> Rem DESCRIPTION 22:00:33 SQL> Rem Any commands which should be run at the start of all oracle 22:00:33 SQL> Rem supplied scripts. 22:00:33 SQL> Rem 22:00:33 SQL> Rem NOTES 22:00:33 SQL> Rem See sqlsessend.sql for the corresponding end script. 22:00:33 SQL> Rem 22:00:33 SQL> Rem MODIFIED (MM/DD/YY) 22:00:33 SQL> Rem surman 03/08/13 - 16462837: Common start and end scripts 22:00:33 SQL> Rem surman 03/08/13 - Created 22:00:33 SQL> Rem 22:00:33 SQL> 22:00:33 SQL> alter session set "_ORACLE_SCRIPT" = true; Session altered. Elapsed: 00:00:00.00 22:00:33 SQL> create or replace 22:00:33 2 package body STANDARD is -- careful on this line; SED edit occurs! 22:00:33 3 22:00:33 4 subtype Cursor_Handle is binary_integer range 0..255; 22:00:33 5 22:00:33 6 INVALID_USERENV_PARAMETER exception; 22:00:33 7 pragma EXCEPTION_INIT(INVALID_USERENV_PARAMETER, -2003); 22:00:33 8 22:00:33 9 -- This exception is used by several sped-up STANDARD functions' ICDs to 22:00:33 10 -- indicate that the ICD is unable to compute the result, and that SQL should 22:00:33 11 -- be used to do the computation. 22:00:33 12 ICD_UNABLE_TO_COMPUTE exception; 22:00:33 13 pragma EXCEPTION_INIT(ICD_UNABLE_TO_COMPUTE, -6594); 22:00:33 14 22:00:33 15 -- icds 22:00:33 16 22:00:33 17 function pesxlt(ch VARCHAR2 CHARACTER SET ANY_CS, 22:00:33 18 cpy VARCHAR2 CHARACTER SET ch%CHARSET, 22:00:33 19 frm VARCHAR2 CHARACTER SET ch%CHARSET, 22:00:33 20 too VARCHAR2 CHARACTER SET ch%CHARSET) 22:00:33 21 return VARCHAR2 CHARACTER SET ch%CHARSET; 22:00:33 22 pragma interface (c,pesxlt); 22:00:33 23 22:00:33 24 -- trig fns 22:00:33 25 function pesxco(c VARCHAR2 CHARACTER SET ANY_CS, format VARCHAR2) return raw; 22:00:33 26 pragma interface (c,pesxco); 22:00:33 27 22:00:33 28 function pesxup(ch VARCHAR2 CHARACTER SET ANY_CS, format VARCHAR2) 22:00:33 29 return VARCHAR2 CHARACTER SET ch%CHARSET; 22:00:33 30 pragma interface (c,pesxup); 22:00:33 31 22:00:33 32 function pesxlo(ch VARCHAR2 CHARACTER SET ANY_CS, format VARCHAR2) 22:00:33 33 return VARCHAR2 CHARACTER SET ch%CHARSET; 22:00:33 34 pragma interface (c,pesxlo); 22:00:33 35 22:00:33 36 function pesxcp(ch VARCHAR2 CHARACTER SET ANY_CS, format VARCHAR2) 22:00:33 37 return VARCHAR2 CHARACTER SET ch%CHARSET; 22:00:33 38 pragma interface (c,pesxcp); 22:00:33 39 22:00:33 40 -- end of NLS icds 22:00:33 41 22:00:33 42 -- begin trusted icds 22:00:33 43 -- Comparisons 22:00:33 44 -- Conversions 22:00:33 45 -- function peslts(label MLSLABEL,format VARCHAR2) return VARCHAR2; 22:00:33 46 -- pragma interface (c,peslts); 22:00:33 47 -- function pesstl(label varchar2,format VARCHAR2) return MLSLABEL; 22:00:33 48 -- pragma interface (c,pesstl); 22:00:33 49 -- end trusted icds 22:00:33 50 ----------------------------------------------------------- 22:00:33 51 22:00:33 52 -- Body for sqlerrm. Not necessary, since COG special-cases this flavor 22:00:33 53 -- of sqlerrm, and never actually calls the body. But the body is required 22:00:33 54 -- because the spec has no pragma builtin or interface on it. So just whine 22:00:33 55 -- if this is ever called 22:00:33 56 function sqlerrm return varchar2 is 22:00:33 57 begin 22:00:33 58 RAISE program_error; 22:00:33 59 return NULL; 22:00:33 60 end sqlerrm; 22:00:33 61 22:00:33 62 function pessdx (ch VARCHAR2 CHARACTER SET ANY_CS) 22:00:33 63 return VARCHAR2 CHARACTER SET ch%CHARSET; 22:00:33 64 pragma interface (c,pessdx); 22:00:33 65 22:00:33 66 -- Special: if the ICD raises ICD_UNABLE_TO_COMPUTE, that means we should do 22:00:33 67 -- the old 'select soundex(...) from dual;' thing. This allows us to do the 22:00:33 68 -- SELECT from PL/SQL rather than having to do it from C (within the ICD.) 22:00:33 69 function SOUNDEX(ch VARCHAR2 CHARACTER SET ANY_CS) 22:00:33 70 return VARCHAR2 CHARACTER SET ch%CHARSET is 22:00:33 71 c VARCHAR2(2000) CHARACTER SET ch%CHARSET; 22:00:33 72 begin 22:00:33 73 c := pessdx(ch); 22:00:33 74 return c; 22:00:33 75 exception 22:00:33 76 when ICD_UNABLE_TO_COMPUTE then 22:00:33 77 select soundex(ch) into c from sys.dual; 22:00:33 78 return c; 22:00:33 79 end SOUNDEX; 22:00:33 80 22:00:33 81 function TRANSLATE(STR1 VARCHAR2 CHARACTER SET ANY_CS, 22:00:33 82 SRC VARCHAR2 CHARACTER SET STR1%CHARSET, 22:00:33 83 DEST VARCHAR2 CHARACTER SET STR1%CHARSET) 22:00:33 84 return VARCHAR2 CHARACTER SET STR1%CHARSET is 22:00:33 85 begin 22:00:33 86 if str1 is null then return str1; else 22:00:33 87 -- The substr and concat in arg list to pesxlt is done to 22:00:33 88 -- allocate a modifiable COPY of the first arg, STR1. This 22:00:33 89 -- operation is a complete cheat, because we pass the copy 22:00:33 90 -- as an IN parm, and modify it on the sly. 22:00:33 91 return pesxlt(STR1, substr(str1,1,1) || substr(str1,2), 22:00:33 92 SRC, DEST); 22:00:33 93 end if; 22:00:33 94 end TRANSLATE; 22:00:33 95 22:00:33 96 function 'IS NAN' (N NUMBER) RETURN BOOLEAN is 22:00:33 97 begin 22:00:33 98 if N IS NULL then 22:00:33 99 return NULL; 22:00:33 100 else 22:00:33 101 return FALSE; 22:00:33 102 end if; 22:00:33 103 end 'IS NAN'; 22:00:33 104 22:00:33 105 function 'IS NOT NAN' (N NUMBER) RETURN BOOLEAN is 22:00:33 106 begin 22:00:33 107 if N IS NULL then 22:00:33 108 return NULL; 22:00:33 109 else 22:00:33 110 return TRUE; 22:00:33 111 end if; 22:00:33 112 end 'IS NOT NAN'; 22:00:33 113 22:00:33 114 function NANVL(n1 NUMBER, n2 NUMBER) return NUMBER is 22:00:33 115 begin 22:00:33 116 return (n1); 22:00:33 117 end NANVL; 22:00:33 118 22:00:33 119 function NANVL(f1 BINARY_FLOAT, f2 BINARY_FLOAT) return BINARY_FLOAT is 22:00:33 120 begin 22:00:33 121 if f1 is nan then return (f2); else return (f1); end if; 22:00:33 122 end NANVL; 22:00:33 123 22:00:33 124 function NANVL(d1 BINARY_DOUBLE, d2 BINARY_DOUBLE) return BINARY_DOUBLE is 22:00:33 125 begin 22:00:33 126 if d1 is nan then return (d2); else return (d1); end if; 22:00:33 127 end NANVL; 22:00:33 128 22:00:33 129 function TO_DATE(LEFT NUMBER, RIGHT VARCHAR2) return DATE IS 22:00:33 130 begin 22:00:33 131 return (TO_DATE(TO_char(LEFT), RIGHT)); 22:00:33 132 end TO_DATE; 22:00:33 133 22:00:33 134 function UID return PLS_INTEGER is 22:00:33 135 i pls_integer; 22:00:33 136 begin 22:00:33 137 select uid into i from sys.dual; 22:00:33 138 return i; 22:00:33 139 end; 22:00:33 140 22:00:33 141 function USER return varchar2 is 22:00:33 142 c varchar2(255); 22:00:33 143 begin 22:00:33 144 select user into c from sys.dual; 22:00:33 145 return c; 22:00:33 146 end; 22:00:33 147 22:00:33 148 22:00:33 149 function pesuen(envstr VARCHAR2) return VARCHAR2; 22:00:33 150 pragma interface (c,pesuen); 22:00:33 151 22:00:33 152 -- Special: if the ICD raises ICD_UNABLE_TO_COMPUTE, that means we should do 22:00:33 153 -- the old 'select userenv(...) from dual;' thing. This allows us to do the 22:00:33 154 -- select from PL/SQL rather than having to do it from C (within the ICD.) 22:00:33 155 function USERENV (envstr varchar2) return varchar2 is 22:00:33 156 c varchar2(255); 22:00:33 157 begin 22:00:33 158 c := upper(envstr); 22:00:33 159 22:00:33 160 -- Gaak: we can't replace the following with a single block of code based 22:00:33 161 -- around 'USERENV(c)' because passing USERENV() anything but a string 22:00:33 162 -- literal parameter result in ORA-2003: Invalid USERENV parameter! This 22:00:33 163 -- also means that we must manually update this file whenever RDBMS adds a 22:00:33 164 -- new option. 22:00:33 165 if c = 'COMMITSCN' then 22:00:33 166 raise USERENV_COMMITSCN_ERROR; 22:00:33 167 elsif c = 'TERMINAL' then 22:00:33 168 begin 22:00:33 169 c := pesuen(c); 22:00:33 170 exception 22:00:33 171 when ICD_UNABLE_TO_COMPUTE then 22:00:33 172 select userenv('TERMINAL') into c from sys.dual; 22:00:33 173 end; 22:00:33 174 elsif c = 'ENTRYID' then 22:00:33 175 begin 22:00:33 176 c := pesuen(c); 22:00:33 177 exception 22:00:33 178 when ICD_UNABLE_TO_COMPUTE then 22:00:33 179 select userenv('ENTRYID') into c from sys.dual; 22:00:33 180 end; 22:00:33 181 elsif c = 'SESSIONID' then 22:00:33 182 begin 22:00:33 183 c := pesuen(c); 22:00:33 184 exception 22:00:33 185 when ICD_UNABLE_TO_COMPUTE then 22:00:33 186 select userenv('SESSIONID') into c from sys.dual; 22:00:33 187 end; 22:00:33 188 elsif c = 'LANGUAGE' then 22:00:33 189 begin 22:00:33 190 c := pesuen(c); 22:00:33 191 exception 22:00:33 192 when ICD_UNABLE_TO_COMPUTE then 22:00:33 193 select userenv('LANGUAGE') into c from sys.dual; 22:00:33 194 end; 22:00:33 195 elsif c = 'LANG' then 22:00:33 196 begin 22:00:33 197 c := pesuen(c); 22:00:33 198 exception 22:00:33 199 when ICD_UNABLE_TO_COMPUTE then 22:00:33 200 select userenv('LANG') into c from sys.dual; 22:00:33 201 end; 22:00:33 202 elsif c = 'INSTANCE' then 22:00:33 203 begin 22:00:33 204 c := pesuen(c); 22:00:33 205 exception 22:00:33 206 when ICD_UNABLE_TO_COMPUTE then 22:00:33 207 select userenv('INSTANCE') into c from sys.dual; 22:00:33 208 end; 22:00:33 209 elsif c = 'CLIENT_INFO' then 22:00:33 210 begin 22:00:33 211 c := pesuen(c); 22:00:33 212 exception 22:00:33 213 when ICD_UNABLE_TO_COMPUTE then 22:00:33 214 select userenv('CLIENT_INFO') into c from sys.dual; 22:00:33 215 end; 22:00:33 216 elsif c = 'ISDBA' then 22:00:33 217 begin 22:00:33 218 c := pesuen(c); 22:00:33 219 exception 22:00:33 220 when ICD_UNABLE_TO_COMPUTE then 22:00:33 221 select userenv('ISDBA') into c from sys.dual; 22:00:33 222 end; 22:00:33 223 elsif c = 'SCHEMAID' then 22:00:33 224 begin 22:00:33 225 c := pesuen(c); 22:00:33 226 exception 22:00:33 227 when ICD_UNABLE_TO_COMPUTE then 22:00:33 228 select userenv('SCHEMAID') into c from sys.dual; 22:00:33 229 end; 22:00:33 230 elsif c = 'SID' then 22:00:33 231 begin 22:00:33 232 c := pesuen(c); 22:00:33 233 exception 22:00:33 234 when ICD_UNABLE_TO_COMPUTE then 22:00:33 235 select userenv('SID') into c from sys.dual; 22:00:33 236 end; 22:00:33 237 elsif c = 'PID' then 22:00:33 238 begin 22:00:33 239 c := pesuen(c); 22:00:33 240 exception 22:00:33 241 when ICD_UNABLE_TO_COMPUTE then 22:00:33 242 select userenv('PID') into c from sys.dual; 22:00:33 243 end; 22:00:33 244 else 22:00:33 245 raise INVALID_USERENV_PARAMETER; 22:00:33 246 end if; 22:00:33 247 return c; 22:00:33 248 end; 22:00:33 249 22:00:33 250 -- Trusted*Oracle additions 22:00:33 251 22:00:33 252 Function ROWLABEL return MLSLABEL is 22:00:33 253 begin return null; end; 22:00:33 254 -- removed - now builtin's 22:00:33 255 22:00:33 256 -- Function TO_CHAR(label MLSLABEL, format varchar2 := '') 22:00:33 257 -- return VARCHAR2 is 22:00:33 258 -- begin return peslts(label,format); end; 22:00:33 259 -- 22:00:33 260 -- Function TO_LABEL(label varchar2, format varchar2 := '') 22:00:33 261 -- return MLSLABEL is 22:00:33 262 -- begin return pesstl(label,format); end; 22:00:33 263 22:00:33 264 -- group functions 22:00:33 265 Function LUB (label MLSLABEL) return MLSLABEL is 22:00:33 266 begin return null; end; 22:00:33 267 Function GLB (label MLSLABEL) return MLSLABEL is 22:00:33 268 begin return null; end; 22:00:33 269 22:00:33 270 -- end of Trusted*Oracle additions 22:00:33 271 22:00:33 272 22:00:33 273 -- beginning of NLS routines 22:00:33 274 -- replaced with new versions 6/3/92 JEM 22:00:33 275 22:00:33 276 function NLSSORT(c VARCHAR2 CHARACTER SET ANY_CS) return RAW is 22:00:33 277 begin 22:00:33 278 return pesxco(c,''); 22:00:33 279 end NLSSORT; 22:00:33 280 22:00:33 281 function NLS_UPPER(ch VARCHAR2 CHARACTER SET ANY_CS) 22:00:33 282 return VARCHAR2 CHARACTER SET ch%CHARSET is 22:00:33 283 begin 22:00:33 284 return pesxup(ch,''); 22:00:33 285 end NLS_UPPER; 22:00:33 286 22:00:33 287 function NLS_LOWER(ch VARCHAR2 CHARACTER SET ANY_CS) 22:00:33 288 return VARCHAR2 CHARACTER SET ch%CHARSET is 22:00:33 289 begin 22:00:33 290 return pesxlo(ch,''); 22:00:33 291 end NLS_LOWER; 22:00:33 292 22:00:33 293 function NLS_INITCAP(ch VARCHAR2 CHARACTER SET ANY_CS) 22:00:33 294 return VARCHAR2 CHARACTER SET ch%CHARSET is 22:00:33 295 begin 22:00:33 296 return pesxcp(ch,''); 22:00:33 297 end NLS_INITCAP; 22:00:33 298 22:00:33 299 function NLS_CHARSET_NAME(csetid PLS_INTEGER) 22:00:33 300 return VARCHAR2 is 22:00:33 301 v varchar2(2000); 22:00:33 302 begin 22:00:33 303 select nls_charset_name(csetid) into v from sys.dual; 22:00:33 304 return v; 22:00:33 305 end NLS_CHARSET_NAME; 22:00:33 306 22:00:33 307 function NLS_CHARSET_ID(csetname VARCHAR2) 22:00:33 308 return PLS_INTEGER is 22:00:33 309 i PLS_INTEGER; 22:00:33 310 begin 22:00:33 311 select nls_charset_id(csetname) into i from sys.dual; 22:00:33 312 return i; 22:00:33 313 end NLS_CHARSET_ID; 22:00:33 314 22:00:33 315 function NLS_CHARSET_DECL_LEN(bytecnt NUMBER, csetid NUMBER) 22:00:33 316 return PLS_INTEGER is 22:00:33 317 i PLS_INTEGER; 22:00:33 318 begin 22:00:33 319 select nls_charset_decl_len(bytecnt, csetid) into i from sys.dual; 22:00:33 320 return i; 22:00:33 321 end NLS_CHARSET_DECL_LEN; 22:00:33 322 -- end of NLS routines 22:00:33 323 22:00:33 324 22:00:33 325 -- DUMP and VSIZE are now not allowed in non-sql plsql, has code to forbid 22:00:33 326 -- it there, and is defined as a builtin in stdspc. The body will not be 22:00:33 327 -- called in plsql. 22:00:33 328 --- CMB 22:00:33 329 ---- 22:00:33 330 -- dump 22:00:33 331 -- dump( expr [,display_format[,start_pos[,length]]]) return varchar2 22:00:33 332 -- how large should the plsql varchar2 string be 22:00:33 333 -- 22:00:33 334 22:00:33 335 -- why do we need these dummy bodies for LEVEL and ROWNUM? 22:00:33 336 22:00:33 337 function LEVEL return NUMBER is 22:00:33 338 begin return 0.0; end; 22:00:33 339 22:00:33 340 function ROWNUM return NUMBER is 22:00:33 341 begin return 0.0; end; 22:00:33 342 22:00:33 343 -- 22:00:33 344 -- ACOS, ASIN, ATAN, ATAN2 22:00:33 345 -- These functions return NULL if any of the inputs are NULL 22:00:33 346 -- 22:00:33 347 function pesacos(n NUMBER) return NUMBER; 22:00:33 348 pragma interface (c,pesacos); 22:00:33 349 22:00:33 350 function pesasin(n NUMBER) return NUMBER; 22:00:33 351 pragma interface (c,pesasin); 22:00:33 352 22:00:33 353 function pesatn2(x NUMBER, y NUMBER) return NUMBER; 22:00:33 354 pragma interface (c,pesatn2); 22:00:33 355 22:00:33 356 function ACOS(n NUMBER) return NUMBER is 22:00:33 357 begin 22:00:33 358 if (n > 1) or (n < -1) then raise VALUE_ERROR; end if; 22:00:33 359 return pesacos(n); 22:00:33 360 end ACOS; 22:00:33 361 22:00:33 362 function ASIN(n NUMBER) return NUMBER is 22:00:33 363 begin 22:00:33 364 if (n > 1) or (n < -1) then raise VALUE_ERROR; end if; 22:00:33 365 return pesasin(n); 22:00:33 366 end ASIN; 22:00:33 367 22:00:33 368 function ATAN2(x NUMBER, y NUMBER) return NUMBER is 22:00:33 369 begin 22:00:33 370 if ((x = 0) and (y = 0)) then raise VALUE_ERROR; end if; 22:00:33 371 return pesatn2(x, y); 22:00:33 372 end ATAN2; 22:00:33 373 22:00:33 374 --**************************************************************** 22:00:33 375 22:00:33 376 -- This body is required, and will be called 22:00:33 377 function NVL (B1 "", B2 "") 22:00:33 378 return "" is 22:00:33 379 begin 22:00:33 380 if (B1 IS NULL) then return(B2); else return(B1); end if; 22:00:33 381 end NVL; 22:00:33 382 22:00:33 383 /* these are special internal functions 22:00:33 384 they are potential dangerous and not to be used by customers */ 22:00:33 385 function "SYS$LOB_REPLICATION" (x in blob) return blob 22:00:33 386 is begin return x; end; 22:00:33 387 function "SYS$LOB_REPLICATION" (x in clob character set any_cs) 22:00:33 388 return clob character set x%charset 22:00:33 389 is begin return x; end; 22:00:33 390 22:00:33 391 -- Generic SQL DDL routine 22:00:33 392 -- 22:00:33 393 -- This used to use plzopn, plzosq, etc. declared above; now we use a 22:00:33 394 -- single bundled call. Move these defs here so new ICD will not disturb 22:00:33 395 -- the ordering of the list. 22:00:33 396 22:00:33 397 FUNCTION plzsql(stmt VARCHAR2) RETURN binary_integer; 22:00:33 398 PRAGMA interface (c,plzsql); 22:00:33 399 22:00:33 400 procedure SQL_DDL(Stmt VARCHAR2) is 22:00:33 401 rc Binary_Integer; 22:00:33 402 DDL_ERROR exception; 22:00:33 403 Begin 22:00:33 404 rc := plzsql(Stmt); 22:00:33 405 if ( rc IS NOT NULL ) then 22:00:33 406 RAISE DDL_ERROR; 22:00:33 407 end if; 22:00:33 408 End; 22:00:33 409 22:00:33 410 -- SQL Transaction routines 22:00:33 411 22:00:33 412 procedure SET_TRANSACTION_USE (vc varchar2) is 22:00:33 413 Begin 22:00:33 414 SQL_DDL('SET TRANSACTION USE ROLLBACK SEGMENT ' || vc); 22:00:33 415 End; 22:00:33 416 22:00:33 417 procedure COMMIT is 22:00:33 418 Begin 22:00:33 419 SQL_DDL('COMMIT'); 22:00:33 420 End; 22:00:33 421 22:00:33 422 procedure COMMIT_CM (vc varchar2) is 22:00:33 423 Begin 22:00:33 424 -- bug13944958: 22:00:33 425 -- COMMIT_CM procedure takes the input argument "vs" as the comment string 22:00:33 426 -- to execute the SQL DDL "COMMIT work comment 'vc'" statement. 22:00:33 427 -- The input comment string to the COMMIT statement is vulnerable to 22:00:33 428 -- SQL injection because it may contain single-quotes. 22:00:33 429 -- Before we manually quote the comment string, we need to escape any 22:00:33 430 -- embedded quotes first. 22:00:33 431 SQL_DDL('COMMIT work comment ' || '''' || 22:00:33 432 replace(vc, '''', '''''') || ''''); 22:00:33 433 End; 22:00:33 434 22:00:33 435 procedure ROLLBACK_NR is 22:00:33 436 Begin 22:00:33 437 SQL_DDL('ROLLBACK'); 22:00:33 438 End; 22:00:33 439 22:00:33 440 procedure ROLLBACK_SV(Save_Point CHAR) is 22:00:33 441 Begin 22:00:33 442 SQL_DDL('ROLLBACK TO ' || Save_Point); 22:00:33 443 End; 22:00:33 444 22:00:33 445 procedure SAVEPOINT(Save_Point CHAR) is 22:00:33 446 begin 22:00:33 447 SQL_DDL('SAVEPOINT ' || Save_Point); 22:00:33 448 end; 22:00:33 449 22:00:33 450 22:00:33 451 ------ Datetime code starts here ------ 22:00:33 452 22:00:33 453 22:00:33 454 -- functions to create intervals from constituent parts. 22:00:33 455 22:00:33 456 function pesn2ymi(numerator number, units number) 22:00:33 457 return yminterval_unconstrained; 22:00:33 458 pragma interface (c,pesn2ymi); 22:00:33 459 function pesn2dsi(numerator number, units number) 22:00:33 460 return dsinterval_unconstrained; 22:00:33 461 pragma interface (c,pesn2dsi); 22:00:33 462 22:00:33 463 function NUMTOYMINTERVAL(numerator number, units varchar2 character set any_cs) 22:00:33 464 return yminterval_unconstrained 22:00:33 465 IS unitno NUMBER := 0; 22:00:33 466 unitstr VARCHAR2(5) character set units%charset := upper(trim(units)); 22:00:33 467 begin 22:00:33 468 IF (unitstr = 'YEAR') THEN unitno := 1; 22:00:33 469 elsif (unitstr = 'MONTH') THEN unitno := 2; 22:00:33 470 END IF; 22:00:33 471 return pesn2ymi(numerator,unitno); 22:00:33 472 -- IF unitno := 0 core will RAISE correct error 22:00:33 473 end; 22:00:33 474 22:00:33 475 function NUMTODSINTERVAL(numerator number, units varchar2 character set any_cs) 22:00:33 476 return dsinterval_unconstrained 22:00:33 477 IS unitno NUMBER := 0; 22:00:33 478 unitstr VARCHAR2(6) character set units%charset := upper(trim(units)); 22:00:33 479 begin 22:00:33 480 IF (unitstr = 'DAY') THEN unitno := 1; 22:00:33 481 elsif (unitstr = 'HOUR') THEN unitno := 2; 22:00:33 482 elsif (unitstr = 'MINUTE') THEN unitno := 3; 22:00:33 483 elsif (unitstr = 'SECOND') THEN unitno := 4; 22:00:33 484 END IF; 22:00:33 485 return pesn2dsi(numerator,unitno); 22:00:33 486 -- IF unitno = 0 core will RAISE correct error 22:00:33 487 end; 22:00:33 488 22:00:33 489 function pessdt return DATE; 22:00:33 490 pragma interface (c,pessdt); 22:00:33 491 22:00:33 492 -- Bug 1287775: back to calling ICD. 22:00:33 493 -- Special: if the ICD raises ICD_UNABLE_TO_COMPUTE, that means we should do 22:00:33 494 -- the old 'SELECT SYSDATE FROM DUAL;' thing. This allows us to do the 22:00:33 495 -- SELECT from PL/SQL rather than having to do it from C (within the ICD.) 22:00:33 496 function sysdate return date is 22:00:33 497 d date; 22:00:33 498 begin 22:00:33 499 d := pessdt; 22:00:33 500 return d; 22:00:33 501 exception 22:00:33 502 when ICD_UNABLE_TO_COMPUTE then 22:00:33 503 select sysdate into d from sys.dual; 22:00:33 504 return d; 22:00:33 505 end; 22:00:33 506 22:00:33 507 function pesguid return RAW; 22:00:33 508 pragma interface (c,pesguid); 22:00:33 509 22:00:33 510 function SYS_GUID return raw is 22:00:33 511 c raw(16); 22:00:33 512 begin 22:00:33 513 c := pesguid; 22:00:33 514 return c; 22:00:33 515 exception 22:00:33 516 when ICD_UNABLE_TO_COMPUTE then 22:00:33 517 select sys_guid() into c from sys.dual; 22:00:33 518 return c; 22:00:33 519 end; 22:00:33 520 22:00:33 521 function pessysctx2(namespace varchar2, attribute varchar2) return varchar2; 22:00:33 522 pragma interface (c,pessysctx2); 22:00:33 523 22:00:33 524 -- Special: if the ICD raises ICD_UNABLE_TO_COMPUTE, that means we should do 22:00:33 525 -- the old 'select sys_context(...) from dual;' thing. This allows us to do 22:00:33 526 -- the select from PL/SQL rather than having to do it from C (within the ICD.) 22:00:33 527 function SYS_CONTEXT(namespace varchar2, attribute varchar2) 22:00:33 528 return varchar2 is 22:00:33 529 c varchar2(4000); 22:00:33 530 BEGIN 22:00:33 531 c := pessysctx2(namespace, attribute); 22:00:33 532 return c; 22:00:33 533 exception 22:00:33 534 when ICD_UNABLE_TO_COMPUTE then 22:00:33 535 select sys_context(namespace,attribute) into c from sys.dual; 22:00:33 536 return c; 22:00:33 537 end; 22:00:33 538 22:00:33 539 -- time zone functions 22:00:33 540 22:00:33 541 function pessts return timestamp_tz_unconstrained; 22:00:33 542 pragma interface (c,pessts); 22:00:33 543 22:00:33 544 -- Special: if the ICD raises ICD_UNABLE_TO_COMPUTE, that means we should do 22:00:33 545 -- the old 'SELECT systimestamp FROM dual;' thing. This allows us to do the 22:00:33 546 -- SELECT from PL/SQL rather than having to do it from C (within the ICD.) 22:00:33 547 FUNCTION systimestamp RETURN timestamp_tz_unconstrained 22:00:33 548 IS t timestamp_tz_unconstrained; 22:00:33 549 BEGIN 22:00:33 550 t := pessts; 22:00:33 551 RETURN t; 22:00:33 552 EXCEPTION 22:00:33 553 WHEN ICD_UNABLE_TO_COMPUTE THEN 22:00:33 554 SELECT systimestamp INTO t FROM sys.dual; 22:00:33 555 RETURN t; 22:00:33 556 END; 22:00:33 557 22:00:33 558 function pesdbtz return varchar2; 22:00:33 559 pragma interface (c,pesdbtz); 22:00:33 560 22:00:33 561 -- Special: if the ICD raises ICD_UNABLE_TO_COMPUTE, that means we should do 22:00:33 562 -- the old 'SELECT dbtimezone FROM dual;' thing. This allows us to do the 22:00:33 563 -- SELECT from PL/SQL rather than having to do it from C (within the ICD.) 22:00:33 564 FUNCTION dbtimezone RETURN varchar2 22:00:33 565 IS t VARCHAR2(75); -- == TZNMSTRLEN [2213965] 22:00:33 566 BEGIN 22:00:33 567 t := pesdbtz; 22:00:33 568 RETURN t; 22:00:33 569 EXCEPTION 22:00:33 570 WHEN ICD_UNABLE_TO_COMPUTE THEN 22:00:33 571 SELECT dbtimezone INTO t FROM sys.dual; 22:00:33 572 RETURN t; 22:00:33 573 END; 22:00:33 574 22:00:33 575 FUNCTION localtimestamp RETURN timestamp_unconstrained 22:00:33 576 IS t timestamp_tz_unconstrained := current_timestamp; 22:00:33 577 BEGIN 22:00:33 578 RETURN (cast(t AS timestamp_unconstrained)); 22:00:33 579 END; 22:00:33 580 22:00:33 581 FUNCTION localtime RETURN time_unconstrained 22:00:33 582 IS t time_tz_unconstrained := current_time; 22:00:33 583 BEGIN 22:00:33 584 RETURN (cast(t AS time_unconstrained)); 22:00:33 585 END; 22:00:33 586 22:00:33 587 function pessysctx3(namespace varchar2, attribute varchar2, 22:00:33 588 newoptional varchar2) return varchar2; 22:00:33 589 pragma interface (c,pessysctx3); 22:00:33 590 22:00:33 591 -- Special: if the ICD raises ICD_UNABLE_TO_COMPUTE, that means we should do 22:00:33 592 -- the old 'select sys_context(...) from dual;' thing. This allows us to do 22:00:33 593 -- the select from PL/SQL rather than having to do it from C (within the ICD.) 22:00:33 594 function SYS_CONTEXT(namespace varchar2, attribute varchar2, 22:00:33 595 newoptional varchar2) 22:00:33 596 return varchar2 is 22:00:33 597 c varchar2(4000); 22:00:33 598 BEGIN 22:00:33 599 c := pessysctx3(namespace, attribute, newoptional); 22:00:33 600 return c; 22:00:33 601 exception 22:00:33 602 when ICD_UNABLE_TO_COMPUTE then 22:00:33 603 select sys_context(namespace,attribute,newoptional) into c from sys.dual; 22:00:33 604 return c; 22:00:33 605 end; 22:00:33 606 22:00:33 607 function TO_NCLOB(cl CLOB CHARACTER SET ANY_CS) return NCLOB is 22:00:33 608 begin 22:00:33 609 return cl; 22:00:33 610 end; 22:00:33 611 function TO_CLOB(cl CLOB CHARACTER SET ANY_CS) return CLOB is 22:00:33 612 begin 22:00:33 613 return cl; 22:00:33 614 end; 22:00:33 615 22:00:33 616 function NCHR(n INTEGER) return NVARCHAR2 is 22:00:33 617 begin 22:00:33 618 return CHR(n using NCHAR_CS); 22:00:33 619 end; 22:00:33 620 22:00:33 621 -- REFs of opaque types are not yet supported. 22:00:33 622 -- function NVL (B1 REF "", B2 REF "") 22:00:33 623 -- return REF "" is 22:00:33 624 -- begin 22:00:33 625 -- if (B1 IS NULL) then return(B2); else return(B1); end if; 22:00:33 626 -- end NVL; 22:00:33 627 22:00:33 628 22:00:33 629 -- END OF PACKAGE standard 22:00:33 630 end; 22:00:33 631 22:00:33 632 22:00:33 633 22:00:33 634 / Package body created. Elapsed: 00:00:00.26 22:00:34 SQL> @?/rdbms/admin/sqlsessend.sql 22:00:34 SQL> Rem 22:00:34 SQL> Rem $Header: rdbms/admin/sqlsessend.sql /main/1 2013/03/13 13:08:33 surman Exp $ 22:00:34 SQL> Rem 22:00:34 SQL> Rem sqlsessend.sql 22:00:34 SQL> Rem 22:00:34 SQL> Rem Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. 22:00:34 SQL> Rem 22:00:34 SQL> Rem NAME 22:00:34 SQL> Rem sqlsessend.sql - SQL session end 22:00:34 SQL> Rem 22:00:34 SQL> Rem DESCRIPTION 22:00:34 SQL> Rem Any commands which should be run at the end of all oracle 22:00:34 SQL> Rem supplied scripts. 22:00:34 SQL> Rem 22:00:34 SQL> Rem NOTES 22:00:34 SQL> Rem See sqlsessstart.sql for the corresponding start script. 22:00:34 SQL> Rem 22:00:34 SQL> Rem MODIFIED (MM/DD/YY) 22:00:34 SQL> Rem surman 03/08/13 - 16462837: Common start and end scripts 22:00:34 SQL> Rem surman 03/08/13 - Created 22:00:34 SQL> Rem 22:00:34 SQL> 22:00:34 SQL> alter session set "_ORACLE_SCRIPT" = false; Session altered. Elapsed: 00:00:00.01 22:00:34 SQL> 22:00:34 SQL> 22:00:34 SQL> grant execute on STANDARD to public; Grant succeeded. Elapsed: 00:00:01.03 22:00:35 SQL> @?/rdbms/admin/sqlsessend.sql 22:00:35 SQL> Rem 22:00:35 SQL> Rem $Header: rdbms/admin/sqlsessend.sql /main/1 2013/03/13 13:08:33 surman Exp $ 22:00:35 SQL> Rem 22:00:35 SQL> Rem sqlsessend.sql 22:00:35 SQL> Rem 22:00:35 SQL> Rem Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. 22:00:35 SQL> Rem 22:00:35 SQL> Rem NAME 22:00:35 SQL> Rem sqlsessend.sql - SQL session end 22:00:35 SQL> Rem 22:00:35 SQL> Rem DESCRIPTION 22:00:35 SQL> Rem Any commands which should be run at the end of all oracle 22:00:35 SQL> Rem supplied scripts. 22:00:35 SQL> Rem 22:00:35 SQL> Rem NOTES 22:00:35 SQL> Rem See sqlsessstart.sql for the corresponding start script. 22:00:35 SQL> Rem 22:00:35 SQL> Rem MODIFIED (MM/DD/YY) 22:00:35 SQL> Rem surman 03/08/13 - 16462837: Common start and end scripts 22:00:35 SQL> Rem surman 03/08/13 - Created 22:00:35 SQL> Rem 22:00:35 SQL> 22:00:35 SQL> alter session set "_ORACLE_SCRIPT" = false; Session altered. Elapsed: 00:00:00.00 22:00:35 SQL> 22:00:35 SQL> 22:00:35 SQL> @@&dbmsstdx 22:00:35 SQL> rem 22:00:35 SQL> rem $Header: rdbms/admin/dbmsstdx.sql /main/32 2015/02/15 21:52:00 sylin Exp $ 22:00:35 SQL> rem 22:00:35 SQL> Rem Copyright (c) 1991, 2015, Oracle and/or its affiliates. 22:00:35 SQL> Rem All rights reserved. 22:00:35 SQL> Rem NAME 22:00:35 SQL> Rem stdext.sql - Kernel extensions to package standard 22:00:35 SQL> Rem DESCRIPTION 22:00:35 SQL> Rem Routines in this package do not need to be qualified by the 22:00:35 SQL> Rem owner or package name, similar to the behaviour of package 22:00:35 SQL> Rem 'standard'. This package mostly contains utility routines for 22:00:35 SQL> Rem triggers. 22:00:35 SQL> Rem RETURNS 22:00:35 SQL> Rem 22:00:35 SQL> Rem NOTES 22:00:35 SQL> Rem 22:00:35 SQL> Rem 22:00:35 SQL> Rem BEGIN SQL_FILE_METADATA 22:00:35 SQL> Rem SQL_SOURCE_FILE: rdbms/admin/dbmsstdx.sql 22:00:35 SQL> Rem SQL_SHIPPED_FILE: rdbms/admin/dbmsstdx.sql 22:00:35 SQL> Rem SQL_PHASE: DBMSSTDX 22:00:35 SQL> Rem SQL_STARTUP_MODE: NORMAL 22:00:35 SQL> Rem SQL_IGNORABLE_ERRORS: NONE 22:00:35 SQL> Rem SQL_CALLING_FILE: rdbms/admin/cdstrt.sql 22:00:35 SQL> Rem END SQL_FILE_METADATA 22:00:35 SQL> Rem 22:00:35 SQL> Rem 22:00:35 SQL> Rem MODIFIED (MM/DD/YY) 22:00:35 SQL> Rem sylin 01/22/15 - 20387919: add ora_max_name_len_supported 22:00:35 SQL> Rem traney 12/04/14 - 41716: long identifiers 22:00:35 SQL> Rem surman 12/29/13 - 13922626: Update SQL metadata 22:00:35 SQL> Rem rpang 07/23/12 - 14362485: add original_sql_txt 22:00:35 SQL> Rem surman 03/27/12 - 13615447: Add SQL patching tags 22:00:35 SQL> Rem lvbcheng 01/13/11 - 128: dbms_id and dbms_quoted_id 22:00:35 SQL> Rem dalpern 03/17/09 - bug 7646876: applying_crossedition_trigger 22:00:35 SQL> Rem sagrawal 05/15/06 - sys_GetTriggerState 22:00:35 SQL> Rem gviswana 05/24/01 - CREATE OR REPLACE SYNONYM 22:00:35 SQL> Rem ykunitom 04/04/01 - fix bug 1473966 22:00:35 SQL> Rem weiwang 05/02/00 - add error functions 22:00:35 SQL> Rem najain 04/25/00 - add partition_pos function 22:00:35 SQL> Rem najain 04/14/00 - add sqltext attr. func 22:00:35 SQL> Rem weiwang 02/28/00 - fix bug 1209532 22:00:35 SQL> Rem weiwang 08/02/99 - change name_list_t to ora_name_list_t 22:00:35 SQL> Rem weiwang 02/09/99 - add isdropcolumn, isaltercolumn 22:00:35 SQL> Rem weiwang 09/15/98 - add function des_encrypted_password 22:00:35 SQL> Rem weiwang 06/11/98 - add function dictionary_obj_owner 22:00:35 SQL> Rem jkrishna 05/05/98 - support for error events 22:00:35 SQL> Rem jkrishna 04/01/98 - adding system event callouts 22:00:35 SQL> Rem cbarclay 11/06/96 - remove kkxl*em 22:00:35 SQL> Rem mmonajje 09/16/96 - Fixing bug 244014; Adding RESTRICT_REFERENCES pr 22:00:35 SQL> Rem ramkrish 06/28/96 - Add EMPTY_BLOB, EMPTY_CLOB routines 22:00:35 SQL> Rem hjakobss 10/16/94 - bug 151485 - remove sql_ddl 22:00:35 SQL> Rem jwijaya 04/05/93 - merge changes from branch 1.3.312.1 22:00:35 SQL> Rem jwijaya 03/26/93 - bug 157348 22:00:35 SQL> Rem rkooi 11/28/92 - add 'keep' option to raise_application_error 22:00:35 SQL> Rem rkooi 10/25/92 - deal with null arg to rae 22:00:35 SQL> Rem glumpkin 10/21/92 - Renamed from STDEXT.SQL 22:00:35 SQL> Rem mmoore 09/24/92 - #(130568) add callback for commit comment 22:00:35 SQL> Rem rkooi 09/02/92 - change pls_integer to binary_integer 22:00:35 SQL> Rem mmoore 08/12/92 - override the savepoint command in standard 22:00:35 SQL> Rem rkooi 06/10/92 - add 'do not change' comment 22:00:35 SQL> Rem mmoore 04/14/92 - move begin_oltp to package transaction 22:00:35 SQL> Rem rkooi 04/06/92 - merge changes from branch 1.7.300.1 22:00:35 SQL> Rem rkooi 04/02/92 - split dbms_standard into separate pkgs 22:00:35 SQL> Rem maporter 03/25/92 - renumber 8200 to 8175 22:00:35 SQL> Rem rbamford 03/07/92 - add BEGIN_OLTP_TRANSACTION 22:00:35 SQL> Rem mroberts 02/21/92 - delete extra rollback_sv procedure 22:00:35 SQL> Rem rkooi 02/17/92 - add set_role and related procedures 22:00:35 SQL> Rem mroberts 02/14/92 - add execute_ddl internal 22:00:35 SQL> Rem mmoore 02/06/92 - change name of package 22:00:35 SQL> Rem mmoore 01/14/92 - add rollback_nr 22:00:35 SQL> Rem mmoore 01/09/92 - speed up 22:00:35 SQL> Rem rkooi 11/24/91 - rename to stdext.sql from stdext.pls 22:00:35 SQL> Rem rkooi 08/26/91 - get rid of stack_application_error 22:00:35 SQL> Rem rkooi 05/08/91 - change name to standard_extension 22:00:35 SQL> Rem rkooi 05/02/91 - forgot skip_row procedure 22:00:35 SQL> Rem mmoore 05/02/91 - move trigger icds to psd, use varchar2 in 22:00:35 SQL> Rem rae/sae 22:00:35 SQL> Rem rkooi 04/23/91 - add 'skip_row' procedure, commit etc. 22:00:35 SQL> Rem procedures. 22:00:35 SQL> Rem Moore 04/02/91 - fix typo 22:00:35 SQL> Rem Moore 03/28/91 - add boolean trigger functions 22:00:35 SQL> Rem Kooi 03/17/91 - Creation 22:00:35 SQL> Rem Kooi 03/12/91 - change name to standard_utilities 22:00:35 SQL> Rem Kooi 02/26/91 - get rid of raise now that psdkse does it 22:00:35 SQL> Rem Kooi 02/26/91 - Creation 22:00:35 SQL> ------------------------------------------------------------------------------ 22:00:35 SQL> 22:00:35 SQL> @@?/rdbms/admin/sqlsessstart.sql 22:00:35 SQL> Rem 22:00:35 SQL> Rem $Header: rdbms/admin/sqlsessstart.sql /main/1 2013/03/13 13:08:33 surman Exp $ 22:00:35 SQL> Rem 22:00:35 SQL> Rem sqlsessstart.sql 22:00:35 SQL> Rem 22:00:35 SQL> Rem Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. 22:00:35 SQL> Rem 22:00:35 SQL> Rem NAME 22:00:35 SQL> Rem sqlsessstart.sql - SQL session start 22:00:35 SQL> Rem 22:00:35 SQL> Rem DESCRIPTION 22:00:35 SQL> Rem Any commands which should be run at the start of all oracle 22:00:35 SQL> Rem supplied scripts. 22:00:35 SQL> Rem 22:00:35 SQL> Rem NOTES 22:00:35 SQL> Rem See sqlsessend.sql for the corresponding end script. 22:00:35 SQL> Rem 22:00:35 SQL> Rem MODIFIED (MM/DD/YY) 22:00:35 SQL> Rem surman 03/08/13 - 16462837: Common start and end scripts 22:00:35 SQL> Rem surman 03/08/13 - Created 22:00:35 SQL> Rem 22:00:35 SQL> 22:00:35 SQL> alter session set "_ORACLE_SCRIPT" = true; Session altered. Elapsed: 00:00:00.00 22:00:35 SQL> 22:00:35 SQL> REM ***************************************************************** 22:00:35 SQL> REM THIS PACKAGE MUST NOT BE MODIFIED BY THE CUSTOMER. DOING SO 22:00:35 SQL> REM COULD CAUSE INTERNAL ERRORS AND SECURITY VIOLATIONS IN THE RDBMS. 22:00:35 SQL> REM ***************************************************************** 22:00:35 SQL> 22:00:35 SQL> create or replace package dbms_standard is 22:00:35 2 22:00:35 3 -- constant defines maximum name length possible 22:00:35 4 ORA_MAX_NAME_LEN constant pls_integer := 128; 22:00:35 5 22:00:35 6 -- types 22:00:35 7 type ora_name_list_t is table of varchar2(2*(ORA_MAX_NAME_LEN+2)+1); 22:00:35 8 22:00:35 9 -- DBMS_ID and DBMS_QUOTED_ID define the length of identifiers 22:00:35 10 -- in objects for SQL, PL/SQL and users. 22:00:35 11 subtype dbms_id is varchar2(ORA_MAX_NAME_LEN); 22:00:35 12 subtype dbms_quoted_id is varchar2(ORA_MAX_NAME_LEN+2); 22:00:35 13 22:00:35 14 subtype dbms_id_30 is varchar2(30); 22:00:35 15 subtype dbms_quoted_id_30 is varchar2(32); 22:00:35 16 subtype dbms_id_128 is varchar2(ORA_MAX_NAME_LEN); 22:00:35 17 subtype dbms_quoted_id_128 is varchar2(ORA_MAX_NAME_LEN+2); 22:00:35 18 22:00:35 19 -- Trigger Operations 22:00:35 20 procedure raise_application_error(num binary_integer, msg varchar2, 22:00:35 21 keeperrorstack boolean default FALSE); 22:00:35 22 pragma interface (C, raise_application_error); -- 1 (see psdicd.c) 22:00:35 23 pragma restrict_references (raise_application_error, WNPS, RNPS, WNDS, RNDS); 22:00:35 24 function inserting return boolean; 22:00:35 25 pragma interface (C, inserting); -- 2 22:00:35 26 pragma restrict_references (inserting, WNPS, RNPS, WNDS); 22:00:35 27 function deleting return boolean; 22:00:35 28 pragma interface (C, deleting); -- 3 22:00:35 29 pragma restrict_references (deleting, WNPS, RNPS, WNDS); 22:00:35 30 function updating return boolean; 22:00:35 31 pragma interface (C, updating); -- 4 22:00:35 32 pragma restrict_references (updating, WNPS, RNPS, WNDS); 22:00:35 33 function updating (colnam varchar2) return boolean; 22:00:35 34 pragma interface (C, updating); -- 5 22:00:35 35 pragma restrict_references (updating, WNPS, RNPS, WNDS); 22:00:35 36 22:00:35 37 -- Transaction Commands 22:00:35 38 procedure commit; 22:00:35 39 pragma interface (C, commit); -- 6 22:00:35 40 procedure commit_cm(vc varchar2); 22:00:35 41 pragma interface (C, commit_cm); -- 7 22:00:35 42 procedure rollback_nr; 22:00:35 43 pragma interface (C, rollback_nr); -- 8 22:00:35 44 procedure rollback_sv(save_point varchar2); 22:00:35 45 pragma interface (C, rollback_sv); -- 9 22:00:35 46 procedure savepoint(save_point varchar2); 22:00:35 47 pragma interface (C, savepoint); -- 10 22:00:35 48 procedure set_transaction_use(vc varchar2); 22:00:35 49 pragma interface (C, set_transaction_use); -- 11 22:00:35 50 22:00:35 51 22:00:35 52 -- Functions supported for system events 22:00:35 53 -- Null or zero will be returned if called in inappropriate occasions 22:00:35 54 -- error functions only search for the top 5 errors in the error stack 22:00:35 55 22:00:35 56 function sysevent return varchar2 ; -- 12 22:00:35 57 pragma interface (C, sysevent); 22:00:35 58 pragma restrict_references (sysevent, WNPS, RNPS, WNDS); 22:00:35 59 function dictionary_obj_type return varchar2 ; -- 13 22:00:35 60 pragma interface (C, dictionary_obj_type); 22:00:35 61 pragma restrict_references (dictionary_obj_type, WNPS, RNPS, WNDS); 22:00:35 62 function dictionary_obj_owner return varchar2 ; -- 14 22:00:35 63 pragma interface (C, dictionary_obj_owner); 22:00:35 64 pragma restrict_references (dictionary_obj_owner, WNPS, RNPS, WNDS); 22:00:35 65 function dictionary_obj_name return varchar2 ; -- 15 22:00:35 66 pragma interface (C, dictionary_obj_name); 22:00:35 67 pragma restrict_references (dictionary_obj_name, WNPS, RNPS, WNDS); 22:00:35 68 function database_name return varchar2 ; -- 16 22:00:35 69 pragma interface (C, database_name); 22:00:35 70 pragma restrict_references (database_name, WNPS, RNPS, WNDS); 22:00:35 71 function instance_num return binary_integer ; -- 17 22:00:35 72 pragma interface (C, instance_num); 22:00:35 73 pragma restrict_references (instance_num, WNPS, RNPS, WNDS); 22:00:35 74 function login_user return varchar2 ; -- 18 22:00:35 75 pragma interface (C, login_user); 22:00:35 76 pragma restrict_references (login_user, WNPS, RNPS, WNDS); 22:00:35 77 function is_servererror (errno binary_integer) 22:00:35 78 return boolean ; -- 19 22:00:35 79 pragma interface (C, is_servererror); 22:00:35 80 pragma restrict_references (is_servererror, WNPS, RNPS, WNDS); 22:00:35 81 22:00:35 82 function server_error(position binary_integer) 22:00:35 83 return binary_integer ; -- 20 22:00:35 84 pragma interface (C, server_error); 22:00:35 85 pragma restrict_references (server_error, WNPS, RNPS, WNDS); 22:00:35 86 function des_encrypted_password(user varchar2 default null) return varchar2; -- 21 22:00:35 87 pragma interface (C, des_encrypted_password); 22:00:35 88 pragma restrict_references (des_encrypted_password, WNPS, RNPS, WNDS); 22:00:35 89 function is_alter_column (column_name varchar2) 22:00:35 90 return boolean ; -- 22 22:00:35 91 pragma interface (C, is_alter_column); 22:00:35 92 pragma restrict_references (is_alter_column, WNPS, RNPS, WNDS); 22:00:35 93 function is_drop_column (column_name varchar2) 22:00:35 94 return boolean ; -- 23 22:00:35 95 pragma interface (C, is_drop_column); 22:00:35 96 pragma restrict_references (is_drop_column, WNPS, RNPS, WNDS); 22:00:35 97 function grantee (user_list out ora_name_list_t) return binary_integer ; -- 24 22:00:35 98 pragma interface (C, grantee); 22:00:35 99 pragma restrict_references (grantee, WNPS, RNPS, WNDS); 22:00:35 100 function revokee (user_list out ora_name_list_t) return binary_integer ; -- 25 22:00:35 101 pragma interface (C, revokee); 22:00:35 102 pragma restrict_references (revokee, WNPS, RNPS, WNDS); 22:00:35 103 function privilege_list (priv_list out ora_name_list_t) 22:00:35 104 return binary_integer ; -- 26 22:00:35 105 pragma interface (C, privilege_list); 22:00:35 106 pragma restrict_references (privilege_list, WNPS, RNPS, WNDS); 22:00:35 107 function with_grant_option return boolean ; -- 27 22:00:35 108 pragma interface (C, with_grant_option); 22:00:35 109 pragma restrict_references (with_grant_option, WNPS, RNPS, WNDS); 22:00:35 110 function dictionary_obj_owner_list (owner_list out ora_name_list_t) 22:00:35 111 return binary_integer; -- 28 22:00:35 112 pragma interface (C, dictionary_obj_owner_list); 22:00:35 113 pragma restrict_references (dictionary_obj_owner_list, WNPS, RNPS, WNDS); 22:00:35 114 function dictionary_obj_name_list (object_list out ora_name_list_t) 22:00:35 115 return binary_integer; -- 29 22:00:35 116 pragma interface (C, dictionary_obj_name_list); 22:00:35 117 pragma restrict_references (dictionary_obj_name_list, WNPS, RNPS, WNDS); 22:00:35 118 function is_creating_nested_table return boolean; -- 30 22:00:35 119 pragma interface (C, is_creating_nested_table); 22:00:35 120 pragma restrict_references (is_creating_nested_table, WNPS, RNPS, WNDS); 22:00:35 121 function client_ip_address return varchar2; -- 31 22:00:35 122 pragma interface (C, client_ip_address); 22:00:35 123 pragma restrict_references (client_ip_address, WNPS, RNPS, WNDS); 22:00:35 124 function sql_txt (sql_text out ora_name_list_t) return binary_integer; -- 32 22:00:35 125 pragma interface (C, sql_txt); 22:00:35 126 pragma restrict_references (sql_txt, WNPS, RNPS, WNDS); 22:00:35 127 function server_error_msg (position binary_integer) return varchar2; -- 33 22:00:35 128 pragma interface (C, server_error_msg); 22:00:35 129 pragma restrict_references (server_error_msg, WNPS, RNPS, WNDS); 22:00:35 130 function server_error_depth return binary_integer; -- 34 22:00:35 131 pragma interface (C, server_error_depth); 22:00:35 132 pragma restrict_references (server_error_depth, WNPS, RNPS, WNDS); 22:00:35 133 function server_error_num_params (position binary_integer) 22:00:35 134 return binary_integer; -- 35 22:00:35 135 pragma interface (C, server_error_num_params); 22:00:35 136 pragma restrict_references (server_error_num_params, WNPS, RNPS, WNDS); 22:00:35 137 function server_error_param(position binary_integer, param binary_integer) 22:00:35 138 return varchar2; -- 36 22:00:35 139 pragma interface (C, server_error_param); 22:00:35 140 pragma restrict_references (server_error_param, WNPS, RNPS, WNDS); 22:00:35 141 function partition_pos return binary_integer; -- 37 22:00:35 142 pragma interface (C, partition_pos); 22:00:35 143 pragma restrict_references (partition_pos, WNPS, RNPS, WNDS); 22:00:35 144 22:00:35 145 function sys_GetTriggerState return pls_integer; 22:00:35 146 pragma interface (C, Sys_GetTriggerState); -- 38 22:00:35 147 pragma restrict_references (Sys_GetTriggerState, wnds, RNDS); 22:00:35 148 function applying_crossedition_trigger return boolean; 22:00:35 149 pragma interface (C, applying_crossedition_trigger); -- 39 22:00:35 150 pragma restrict_references (applying_crossedition_trigger, WNPS,RNPS,WNDS); 22:00:35 151 22:00:35 152 function original_sql_txt (sql_text out ora_name_list_t) 22:00:35 153 return binary_integer; -- 40 22:00:35 154 pragma interface (C, original_sql_txt); 22:00:35 155 pragma restrict_references (original_sql_txt, WNPS, RNPS, WNDS); 22:00:35 156 22:00:35 157 /*----------------------------------------------------------------------------- 22:00:35 158 Function: return maximum name length supported 22:00:35 159 If compatible >= 12.2.0.0, returns 128. 22:00:35 160 If compatible < 12.2.0.0, returns 30. 22:00:35 161 */ 22:00:35 162 22:00:35 163 function ora_max_name_len_supported return pls_integer; 22:00:35 164 pragma interface (C, ora_max_name_len_supported); 22:00:35 165 end; 22:00:35 166 / Package created. Elapsed: 00:00:00.75 22:00:36 SQL> 22:00:36 SQL> create or replace public synonym dbms_standard for sys.dbms_standard 22:00:36 2 / Synonym created. Elapsed: 00:00:00.07 22:00:36 SQL> grant execute on dbms_standard to public 22:00:36 2 / Grant succeeded. Elapsed: 00:00:00.01 22:00:36 SQL> 22:00:36 SQL> @?/rdbms/admin/sqlsessend.sql 22:00:36 SQL> Rem 22:00:36 SQL> Rem $Header: rdbms/admin/sqlsessend.sql /main/1 2013/03/13 13:08:33 surman Exp $ 22:00:36 SQL> Rem 22:00:36 SQL> Rem sqlsessend.sql 22:00:36 SQL> Rem 22:00:36 SQL> Rem Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. 22:00:36 SQL> Rem 22:00:36 SQL> Rem NAME 22:00:36 SQL> Rem sqlsessend.sql - SQL session end 22:00:36 SQL> Rem 22:00:36 SQL> Rem DESCRIPTION 22:00:36 SQL> Rem Any commands which should be run at the end of all oracle 22:00:36 SQL> Rem supplied scripts. 22:00:36 SQL> Rem 22:00:36 SQL> Rem NOTES 22:00:36 SQL> Rem See sqlsessstart.sql for the corresponding start script. 22:00:36 SQL> Rem 22:00:36 SQL> Rem MODIFIED (MM/DD/YY) 22:00:36 SQL> Rem surman 03/08/13 - 16462837: Common start and end scripts 22:00:36 SQL> Rem surman 03/08/13 - Created 22:00:36 SQL> Rem 22:00:36 SQL> 22:00:36 SQL> alter session set "_ORACLE_SCRIPT" = false; Session altered. Elapsed: 00:00:00.00 22:00:36 SQL> 22:00:36 SQL> 22:00:36 SQL> alter session set "_force_standard_compile"=FALSE; Session altered. Elapsed: 00:00:00.00 22:00:36 SQL> 22:00:36 SQL> -- Step (III) 22:00:36 SQL> -- 22:00:36 SQL> -- Invalidate views and synonyms which depend (directly or indirectly) on 22:00:36 SQL> -- invalid objects. 22:00:36 SQL> begin 22:00:36 2 loop 22:00:36 3 update obj$ o_outer set status = 6 22:00:36 4 where type# in (4, 5) 22:00:36 5 and status not in (5, 6) 22:00:36 6 and linkname is null 22:00:36 7 and ((subname is null) or (subname <> 'DBMS_DBUPGRADE_BABY')) 22:00:36 8 and exists (select o.obj# from obj$ o, dependency$ d 22:00:36 9 where d.d_obj# = o_outer.obj# 22:00:36 10 and d.p_obj# = o.obj# 22:00:36 11 and (bitand(d.property, 1) = 1) 22:00:36 12 and o.status > 1); 22:00:36 13 exit when sql%notfound; 22:00:36 14 end loop; 22:00:36 15 end; 22:00:36 16 / PL/SQL procedure successfully completed. Elapsed: 00:00:00.32 22:00:36 SQL> 22:00:36 SQL> commit; Commit complete. Elapsed: 00:00:00.00 22:00:36 SQL> 22:00:36 SQL> alter system flush shared_pool; System altered. Elapsed: 00:00:00.03 22:00:36 SQL> 22:00:36 SQL> -- Step (IV) 22:00:36 SQL> -- 22:00:36 SQL> -- Delete Diana for tables, views, and sequences 22:00:36 SQL> -- 22:00:36 SQL> -- The DELETEs are coded in chunks using a PL/SQL loop to avoid running 22:00:36 SQL> -- into rollback segment limits. 22:00:36 SQL> -- 22:00:36 SQL> begin 22:00:36 2 22:00:36 3 loop 22:00:36 4 delete from idl_ub1$ where 22:00:36 5 obj# in (select o.obj# from obj$ o where o.type# in (2, 4, 6)) 22:00:36 6 and rownum < 5000; 22:00:36 7 exit when sql%rowcount = 0; 22:00:36 8 commit; 22:00:36 9 end loop; 22:00:36 10 22:00:36 11 -- 22:00:36 12 -- IDL_UB2$ must use dynamic SQL because its PIECE type is not 22:00:36 13 -- understood by PL/SQL. 22:00:36 14 -- 22:00:36 15 loop 22:00:36 16 execute immediate 22:00:36 17 'delete from idl_ub2$ where 22:00:36 18 obj# in (select o.obj# from obj$ o where o.type# in (2, 4, 6)) 22:00:36 19 and rownum < 5000'; 22:00:36 20 exit when sql%rowcount = 0; 22:00:36 21 commit; 22:00:36 22 end loop; 22:00:36 23 22:00:36 24 -- 22:00:36 25 -- IDL_SB4$ must use dynamic SQL because its PIECE type is not 22:00:36 26 -- understood by PL/SQL. 22:00:36 27 -- 22:00:36 28 loop 22:00:36 29 execute immediate 22:00:36 30 'delete from idl_sb4$ where 22:00:36 31 obj# in (select o.obj# from obj$ o where o.type# in (2, 4, 6)) 22:00:36 32 and rownum < 5000'; 22:00:36 33 exit when sql%rowcount = 0; 22:00:36 34 commit; 22:00:36 35 end loop; 22:00:36 36 22:00:36 37 loop 22:00:36 38 delete from idl_char$ where 22:00:36 39 obj# in (select o.obj# from obj$ o where o.type# in (2, 4, 6)) 22:00:36 40 and rownum < 5000; 22:00:36 41 exit when sql%rowcount = 0; 22:00:36 42 commit; 22:00:36 43 end loop; 22:00:36 44 end; 22:00:36 45 / PL/SQL procedure successfully completed. Elapsed: 00:00:00.11 22:00:36 SQL> commit; Commit complete. Elapsed: 00:00:00.00 22:00:36 SQL> alter system flush shared_pool; System altered. Elapsed: 00:00:00.03 22:00:36 SQL> 22:00:36 SQL> Rem Continue even if there are SQL errors 22:00:36 SQL> WHENEVER SQLERROR CONTINUE; 22:00:36 SQL> 22:00:36 SQL> Rem =========================================================================== 22:00:36 SQL> Rem END utlip.sql 22:00:36 SQL> Rem =========================================================================== 22:00:36 SQL> 22:00:36 SQL> -- explicitly compile these now, before close/reopen. Otherwise they would 22:00:36 SQL> -- be used/validated within PDB Open, where such patching (clearing of dict 22:00:36 SQL> -- rows) can't be done. 22:00:36 SQL> alter session set "_ORACLE_SCRIPT"=true; Session altered. Elapsed: 00:00:00.01 22:00:36 SQL> alter public synonym ALL_OBJECTS compile; Synonym altered. Elapsed: 00:00:01.19 22:00:37 SQL> alter view SYS.V_$PARAMETER compile; View altered. Elapsed: 00:00:00.31 22:00:38 SQL> 22:00:38 SQL> WHENEVER SQLERROR CONTINUE; 22:00:38 SQL> alter type SYS.ANYDATA compile; Type altered. Elapsed: 00:00:01.93 22:00:40 SQL> WHENEVER SQLERROR EXIT; 22:00:40 SQL> 22:00:40 SQL> alter session set "_ORACLE_SCRIPT"=false; Session altered. Elapsed: 00:00:00.00 22:00:40 SQL> 22:00:40 SQL> alter pluggable database "&pdbname" close immediate instances=all; Pluggable database altered. Elapsed: 00:03:39.83 22:04:19 SQL> alter pluggable database "&pdbname" open restricted; Warning: PDB altered with errors. Elapsed: 00:00:20.18 22:04:40 SQL> 22:04:40 SQL> -- mark old version types as valid, as utlrp skips these 22:04:40 SQL> update sys.obj$ set status = 1 22:04:40 2 where type#=13 and subname is not null and status > 1; 157 rows updated. Elapsed: 00:00:00.07 22:04:40 SQL> commit; Commit complete. Elapsed: 00:00:00.01 22:04:40 SQL> alter system flush shared_pool; System altered. Elapsed: 00:00:00.03 22:04:40 SQL> 22:04:40 SQL> @@?/rdbms/admin/utlrp 22:04:40 SQL> Rem 22:04:40 SQL> Rem $Header: utlrp.sql 24-jul-2003.10:06:51 gviswana Exp $ 22:04:40 SQL> Rem 22:04:40 SQL> Rem utlrp.sql 22:04:40 SQL> Rem 22:04:40 SQL> Rem Copyright (c) 1998, 2003, Oracle Corporation. All rights reserved. 22:04:40 SQL> Rem 22:04:40 SQL> Rem NAME 22:04:40 SQL> Rem utlrp.sql - Recompile invalid objects 22:04:40 SQL> Rem 22:04:40 SQL> Rem DESCRIPTION 22:04:40 SQL> Rem This script recompiles invalid objects in the database. 22:04:40 SQL> Rem 22:04:40 SQL> Rem When run as one of the last steps during upgrade or downgrade, 22:04:40 SQL> Rem this script will validate all remaining invalid objects. It will 22:04:40 SQL> Rem also run a component validation procedure for each component in 22:04:40 SQL> Rem the database. See the README notes for your current release and 22:04:40 SQL> Rem the Oracle Database Upgrade book for more information about 22:04:40 SQL> Rem using utlrp.sql 22:04:40 SQL> Rem 22:04:40 SQL> Rem Although invalid objects are automatically re-validated when used, 22:04:40 SQL> Rem it is useful to run this script after an upgrade or downgrade and 22:04:40 SQL> Rem after applying a patch. This minimizes latencies caused by 22:04:40 SQL> Rem on-demand recompilation. Oracle strongly recommends running this 22:04:40 SQL> Rem script after upgrades, downgrades and patches. 22:04:40 SQL> Rem 22:04:40 SQL> Rem NOTES 22:04:40 SQL> Rem * This script must be run using SQL*PLUS. 22:04:40 SQL> Rem * You must be connected AS SYSDBA to run this script. 22:04:40 SQL> Rem * There should be no other DDL on the database while running the 22:04:40 SQL> Rem script. Not following this recommendation may lead to deadlocks. 22:04:40 SQL> Rem 22:04:40 SQL> Rem MODIFIED (MM/DD/YY) 22:04:40 SQL> Rem gviswana 06/26/03 - Switch default to parallel if appropriate 22:04:40 SQL> Rem gviswana 06/12/03 - Switch default back to serial 22:04:40 SQL> Rem gviswana 05/20/03 - 2814808: Automatic parallelism tuning 22:04:40 SQL> Rem rburns 04/28/03 - timestamps and serveroutput for diagnostics 22:04:40 SQL> Rem gviswana 04/13/03 - utlrcmp.sql load -> catproc 22:04:40 SQL> Rem gviswana 06/25/02 - Add documentation 22:04:40 SQL> Rem gviswana 11/12/01 - Use utl_recomp.recomp_serial 22:04:40 SQL> Rem rdecker 11/09/01 - ADD ALTER library support FOR bug 1952368 22:04:40 SQL> Rem rburns 11/12/01 - validate all components after compiles 22:04:40 SQL> Rem rburns 11/06/01 - fix invalid CATPROC call 22:04:40 SQL> Rem rburns 09/29/01 - use 9.2.0 22:04:40 SQL> Rem rburns 09/20/01 - add check for CATPROC valid 22:04:40 SQL> Rem rburns 07/06/01 - get version from instance view 22:04:40 SQL> Rem rburns 05/09/01 - fix for use with 8.1.x 22:04:40 SQL> Rem arithikr 04/17/01 - 1703753: recompile object type# 29,32,33 22:04:40 SQL> Rem skabraha 09/25/00 - validate is now a keyword 22:04:40 SQL> Rem kosinski 06/14/00 - Persistent parameters 22:04:40 SQL> Rem skabraha 06/05/00 - validate tables also 22:04:40 SQL> Rem jdavison 04/11/00 - Modify usage notes for 8.2 changes. 22:04:40 SQL> Rem rshaikh 09/22/99 - quote name for recompile 22:04:40 SQL> Rem ncramesh 08/04/98 - change for sqlplus 22:04:40 SQL> Rem usundara 06/03/98 - merge from 8.0.5 22:04:40 SQL> Rem usundara 04/29/98 - creation (split from utlirp.sql). 22:04:40 SQL> Rem Mark Ramacher (mramache) was the original 22:04:40 SQL> Rem author of this script. 22:04:40 SQL> Rem 22:04:40 SQL> 22:04:40 SQL> Rem =========================================================================== 22:04:40 SQL> Rem BEGIN utlrp.sql 22:04:40 SQL> Rem =========================================================================== 22:04:40 SQL> 22:04:40 SQL> @@utlprp.sql 0 22:04:40 SQL> Rem Copyright (c) 2003, 2015, Oracle and/or its affiliates. 22:04:40 SQL> Rem All rights reserved. 22:04:40 SQL> Rem 22:04:40 SQL> Rem NAME 22:04:40 SQL> Rem utlprp.sql - Recompile invalid objects in the database 22:04:40 SQL> Rem 22:04:40 SQL> Rem DESCRIPTION 22:04:40 SQL> Rem This script recompiles invalid objects in the database. 22:04:40 SQL> Rem 22:04:40 SQL> Rem This script is typically used to recompile invalid objects 22:04:40 SQL> Rem remaining at the end of a database upgrade or downgrade. 22:04:40 SQL> Rem 22:04:40 SQL> Rem Although invalid objects are automatically recompiled on demand, 22:04:40 SQL> Rem running this script ahead of time will reduce or eliminate 22:04:40 SQL> Rem latencies due to automatic recompilation. 22:04:40 SQL> Rem 22:04:40 SQL> Rem This script is a wrapper based on the UTL_RECOMP package. 22:04:40 SQL> Rem UTL_RECOMP provides a more general recompilation interface, 22:04:40 SQL> Rem including options to recompile objects in a single schema. Please 22:04:40 SQL> Rem see the documentation for package UTL_RECOMP for more details. 22:04:40 SQL> Rem 22:04:40 SQL> Rem INPUTS 22:04:40 SQL> Rem The degree of parallelism for recompilation can be controlled by 22:04:40 SQL> Rem providing a parameter to this script. If this parameter is 0 or 22:04:40 SQL> Rem NULL, UTL_RECOMP will automatically determine the appropriate 22:04:40 SQL> Rem level of parallelism based on Oracle parameters cpu_count and 22:04:40 SQL> Rem parallel_threads_per_cpu. If the parameter is 1, sequential 22:04:40 SQL> Rem recompilation is used. Please see the documentation for package 22:04:40 SQL> Rem UTL_RECOMP for more details. 22:04:40 SQL> Rem 22:04:40 SQL> Rem NOTES 22:04:40 SQL> Rem * You must be connected AS SYSDBA to run this script. 22:04:40 SQL> Rem * There should be no other DDL on the database while running the 22:04:40 SQL> Rem script. Not following this recommendation may lead to deadlocks. 22:04:40 SQL> Rem 22:04:40 SQL> Rem MODIFIED (MM/DD/YY) 22:04:40 SQL> Rem jmuller 12/09/14 - Fix bug 19728696 (sort of): clarify comments 22:04:40 SQL> Rem pyam 04/08/14 - 18478064: factor out to reenable_indexes.sql 22:04:40 SQL> Rem kquinn 11/01/11 - 13059165: amend 'OBJECTS WITH ERRORS' SQL 22:04:40 SQL> Rem cdilling 05/15/10 - fix bug 9712478 - call local enquote_name 22:04:40 SQL> Rem anighosh 02/19/09 - #(8264899): re-enabling of function based indexes 22:04:40 SQL> Rem not needed. 22:04:40 SQL> Rem cdilling 07/21/08 - check bitand for functional index - bug 7243270 22:04:40 SQL> Rem cdilling 01/21/08 - add support for ORA-30552 22:04:40 SQL> Rem cdilling 08/27/07 - check disabled indexes only 22:04:40 SQL> Rem cdilling 05/22/07 - add support for ORA-38301 22:04:40 SQL> Rem cdilling 02/19/07 - 5530085 - renable invalid indexes 22:04:40 SQL> Rem rburns 03/17/05 - use dbms_registry_sys 22:04:40 SQL> Rem gviswana 02/07/05 - Post-compilation diagnostics 22:04:40 SQL> Rem gviswana 09/09/04 - Auto tuning and diagnosability 22:04:40 SQL> Rem rburns 09/20/04 - fix validate_components 22:04:40 SQL> Rem gviswana 12/09/03 - Move functional-index re-enable here 22:04:40 SQL> Rem gviswana 06/04/03 - gviswana_bug-2814808 22:04:40 SQL> Rem gviswana 05/28/03 - Created 22:04:40 SQL> Rem 22:04:40 SQL> 22:04:40 SQL> SET VERIFY OFF; 22:04:40 SQL> 22:04:40 SQL> SELECT dbms_registry_sys.time_stamp('utlrp_bgn') as timestamp from dual; TIMESTAMP -------------------------------------------------------------------------------- COMP_TIMESTAMP UTLRP_BGN 2018-07-22 22:04:51 1 row selected. Elapsed: 00:00:12.16 22:04:52 SQL> 22:04:52 SQL> DOC 22:04:52 DOC> The following PL/SQL block invokes UTL_RECOMP to recompile invalid 22:04:52 DOC> objects in the database. Recompilation time is proportional to the 22:04:52 DOC> number of invalid objects in the database, so this command may take 22:04:52 DOC> a long time to execute on a database with a large number of invalid 22:04:52 DOC> objects. 22:04:52 DOC> 22:04:52 DOC> Use the following queries to track recompilation progress: 22:04:52 DOC> 22:04:52 DOC> 1. Query returning the number of invalid objects remaining. This 22:04:52 DOC> number should decrease with time. 22:04:52 DOC> SELECT COUNT(*) FROM obj$ WHERE status IN (4, 5, 6); 22:04:52 DOC> 22:04:52 DOC> 2. Query returning the number of objects compiled so far. This number 22:04:52 DOC> should increase with time. 22:04:52 DOC> SELECT COUNT(*) FROM UTL_RECOMP_COMPILED; 22:04:52 DOC> 22:04:52 DOC> This script automatically chooses serial or parallel recompilation 22:04:52 DOC> based on the number of CPUs available (parameter cpu_count) multiplied 22:04:52 DOC> by the number of threads per CPU (parameter parallel_threads_per_cpu). 22:04:52 DOC> On RAC, this number is added across all RAC nodes. 22:04:52 DOC> 22:04:52 DOC> UTL_RECOMP uses DBMS_SCHEDULER to create jobs for parallel 22:04:52 DOC> recompilation. Jobs are created without instance affinity so that they 22:04:52 DOC> can migrate across RAC nodes. Use the following queries to verify 22:04:52 DOC> whether UTL_RECOMP jobs are being created and run correctly: 22:04:52 DOC> 22:04:52 DOC> 1. Query showing jobs created by UTL_RECOMP 22:04:52 DOC> SELECT job_name FROM dba_scheduler_jobs 22:04:52 DOC> WHERE job_name like 'UTL_RECOMP_SLAVE_%'; 22:04:52 DOC> 22:04:52 DOC> 2. Query showing UTL_RECOMP jobs that are running 22:04:52 DOC> SELECT job_name FROM dba_scheduler_running_jobs 22:04:52 DOC> WHERE job_name like 'UTL_RECOMP_SLAVE_%'; 22:04:52 DOC># 22:04:52 SQL> 22:04:52 SQL> DECLARE 22:04:52 2 threads pls_integer := &&1; 22:04:52 3 BEGIN 22:04:52 4 utl_recomp.recomp_parallel(threads); 22:04:52 5 END; 22:04:52 6 / PL/SQL procedure successfully completed. Elapsed: 00:16:51.21 22:21:43 SQL> 22:21:43 SQL> SELECT dbms_registry_sys.time_stamp('utlrp_end') as timestamp from dual; TIMESTAMP -------------------------------------------------------------------------------- COMP_TIMESTAMP UTLRP_END 2018-07-22 22:21:43 1 row selected. Elapsed: 00:00:00.25 22:21:43 SQL> 22:21:43 SQL> Rem #(8264899): The code to Re-enable functional indexes, which used to exist 22:21:43 SQL> Rem here, is no longer needed. 22:21:43 SQL> 22:21:43 SQL> DOC 22:21:43 DOC> The following query reports the number of invalid objects. 22:21:43 DOC> 22:21:43 DOC> If the number is higher than expected, please examine the error 22:21:43 DOC> messages reported with each object (using SHOW ERRORS) to see if they 22:21:43 DOC> point to system misconfiguration or resource constraints that must be 22:21:43 DOC> fixed before attempting to recompile these objects. 22:21:43 DOC># 22:21:43 SQL> select COUNT(*) "OBJECTS WITH ERRORS" from obj$ where status in (3,4,5,6); OBJECTS WITH ERRORS ------------------- 0 1 row selected. Elapsed: 00:00:00.02 22:21:43 SQL> 22:21:43 SQL> 22:21:43 SQL> DOC 22:21:43 DOC> The following query reports the number of exceptions caught during 22:21:43 DOC> recompilation. If this number is non-zero, please query the error 22:21:43 DOC> messages in the table UTL_RECOMP_ERRORS to see if any of these errors 22:21:43 DOC> are due to misconfiguration or resource constraints that must be 22:21:43 DOC> fixed before objects can compile successfully. 22:21:43 DOC> Note: Typical compilation errors (due to coding errors) are not 22:21:43 DOC> logged into this table: they go into DBA_ERRORS instead. 22:21:43 DOC># 22:21:43 SQL> select COUNT(*) "ERRORS DURING RECOMPILATION" from utl_recomp_errors; ERRORS DURING RECOMPILATION --------------------------- 0 1 row selected. Elapsed: 00:00:00.01 22:21:43 SQL> 22:21:43 SQL> Rem ===================================================================== 22:21:43 SQL> Rem Reenable indexes that may have been disabled, based on the 22:21:43 SQL> Rem table SYS.ENABLED$INDEXES 22:21:43 SQL> Rem ===================================================================== 22:21:43 SQL> 22:21:43 SQL> @@?/rdbms/admin/reenable_indexes.sql 22:21:43 SQL> Rem 22:21:43 SQL> Rem $Header: rdbms/admin/reenable_indexes.sql /main/3 2015/02/04 13:57:27 sylin Exp $ 22:21:43 SQL> Rem 22:21:43 SQL> Rem reenable_indexes.sql 22:21:43 SQL> Rem 22:21:43 SQL> Rem Copyright (c) 2014, 2015, Oracle and/or its affiliates. 22:21:43 SQL> Rem All rights reserved. 22:21:43 SQL> Rem 22:21:43 SQL> Rem NAME 22:21:43 SQL> Rem reenable_indexes.sql - 22:21:43 SQL> Rem 22:21:43 SQL> Rem DESCRIPTION 22:21:43 SQL> Rem 22:21:43 SQL> Rem 22:21:43 SQL> Rem NOTES 22:21:43 SQL> Rem 22:21:43 SQL> Rem 22:21:43 SQL> Rem BEGIN SQL_FILE_METADATA 22:21:43 SQL> Rem SQL_SOURCE_FILE: rdbms/admin/reenable_indexes.sql 22:21:43 SQL> Rem SQL_SHIPPED_FILE: rdbms/admin/reenable_indexes.sql 22:21:43 SQL> Rem SQL_PHASE: REENABLE_INDEXES 22:21:43 SQL> Rem SQL_STARTUP_MODE: NORMAL 22:21:43 SQL> Rem SQL_IGNORABLE_ERRORS: NONE 22:21:43 SQL> Rem SQL_CALLING_FILE: rdbms/admin/noncdb_to_pdb.sql 22:21:43 SQL> Rem END SQL_FILE_METADATA 22:21:43 SQL> Rem 22:21:43 SQL> Rem MODIFIED (MM/DD/YY) 22:21:43 SQL> Rem sylin 01/30/15 - bug20422151 - longer identifier 22:21:43 SQL> Rem surman 01/08/15 - 19475031: Update SQL metadata 22:21:43 SQL> Rem pyam 04/03/14 - Reenable indexes based on sys.enabled$indexes 22:21:43 SQL> Rem (formerly in utlprp.sql) 22:21:43 SQL> Rem pyam 04/03/14 - Created 22:21:43 SQL> Rem 22:21:43 SQL> 22:21:43 SQL> Rem 22:21:43 SQL> Rem Declare function local_enquote_name to pass FALSE 22:21:43 SQL> Rem into underlying dbms_assert.enquote_name function 22:21:43 SQL> Rem 22:21:43 SQL> CREATE OR REPLACE FUNCTION local_enquote_name (str varchar2) 22:21:43 2 return varchar2 is 22:21:43 3 begin 22:21:43 4 return dbms_assert.enquote_name(str, FALSE); 22:21:43 5 end local_enquote_name; 22:21:43 6 / Function created. Elapsed: 00:00:00.03 22:21:43 SQL> Rem 22:21:43 SQL> Rem If sys.enabled$index table exists, then re-enable 22:21:43 SQL> Rem list of functional indexes that were enabled prior to upgrade 22:21:43 SQL> Rem The table sys.enabled$index table is created in catupstr.sql 22:21:43 SQL> Rem 22:21:44 SQL> SET serveroutput on 22:21:44 SQL> DECLARE 22:21:44 2 TYPE tab_char IS TABLE OF VARCHAR2(32767) INDEX BY BINARY_INTEGER; 22:21:44 3 commands tab_char; 22:21:44 4 p_null CHAR(1); 22:21:44 5 p_schemaname dbms_id; 22:21:44 6 p_indexname dbms_id; 22:21:44 7 rebuild_idx_msg BOOLEAN := FALSE; 22:21:44 8 non_existent_index exception; 22:21:44 9 recycle_bin_objs exception; 22:21:44 10 cannot_change_obj exception; 22:21:44 11 no_such_table exception; 22:21:44 12 pragma exception_init(non_existent_index, -1418); 22:21:44 13 pragma exception_init(recycle_bin_objs, -38301); 22:21:44 14 pragma exception_init(cannot_change_obj, -30552); 22:21:44 15 pragma exception_init(no_such_table, -942); 22:21:44 16 type cursor_t IS REF CURSOR; 22:21:44 17 reg_cursor cursor_t; 22:21:44 18 22:21:44 19 BEGIN 22:21:44 20 -- Check for existence of the table marking disabled functional indices 22:21:44 21 22:21:44 22 SELECT NULL INTO p_null FROM DBA_OBJECTS 22:21:44 23 WHERE owner = 'SYS' and object_name = 'ENABLED$INDEXES' and 22:21:44 24 object_type = 'TABLE' and rownum <=1; 22:21:44 25 22:21:44 26 -- Select indices to be re-enabled 22:21:44 27 EXECUTE IMMEDIATE q'+ 22:21:44 28 SELECT 'ALTER INDEX ' || 22:21:44 29 local_enquote_name(e.schemaname) || '.' || 22:21:44 30 local_enquote_name(e.indexname) || ' ENABLE' 22:21:44 31 FROM enabled$indexes e, ind$ i 22:21:44 32 WHERE e.objnum = i.obj# AND bitand(i.flags, 1024) != 0 AND 22:21:44 33 bitand(i.property, 16) != 0+' 22:21:44 34 BULK COLLECT INTO commands; 22:21:44 35 22:21:44 36 IF (commands.count() > 0) THEN 22:21:44 37 FOR i IN 1 .. commands.count() LOOP 22:21:44 38 BEGIN 22:21:44 39 EXECUTE IMMEDIATE commands(i); 22:21:44 40 EXCEPTION 22:21:44 41 WHEN NON_EXISTENT_INDEX THEN NULL; 22:21:44 42 WHEN RECYCLE_BIN_OBJS THEN NULL; 22:21:44 43 WHEN CANNOT_CHANGE_OBJ THEN rebuild_idx_msg := TRUE; 22:21:44 44 END; 22:21:44 45 END LOOP; 22:21:44 46 END IF; 22:21:44 47 22:21:44 48 -- Output any indexes in the table that could not be re-enabled 22:21:44 49 -- due to ORA-30552 during ALTER INDEX...ENBLE command 22:21:44 50 22:21:44 51 IF rebuild_idx_msg THEN 22:21:44 52 BEGIN 22:21:44 53 DBMS_OUTPUT.PUT_LINE 22:21:44 54 ('The following indexes could not be re-enabled and may need to be rebuilt:'); 22:21:44 55 22:21:44 56 OPEN reg_cursor FOR 22:21:44 57 'SELECT e.schemaname, e.indexname 22:21:44 58 FROM enabled$indexes e, ind$ i 22:21:44 59 WHERE e.objnum = i.obj# AND bitand(i.flags, 1024) != 0'; 22:21:44 60 22:21:44 61 LOOP 22:21:44 62 FETCH reg_cursor INTO p_schemaname, p_indexname; 22:21:44 63 EXIT WHEN reg_cursor%NOTFOUND; 22:21:44 64 DBMS_OUTPUT.PUT_LINE 22:21:44 65 ('.... INDEX ' || p_schemaname || '.' || p_indexname); 22:21:44 66 END LOOP; 22:21:44 67 CLOSE reg_cursor; 22:21:44 68 22:21:44 69 EXCEPTION 22:21:44 70 WHEN NO_DATA_FOUND THEN CLOSE reg_cursor; 22:21:44 71 WHEN NO_SUCH_TABLE THEN CLOSE reg_cursor; 22:21:44 72 WHEN OTHERS THEN CLOSE reg_cursor; raise; 22:21:44 73 END; 22:21:44 74 22:21:44 75 END IF; 22:21:44 76 22:21:44 77 EXECUTE IMMEDIATE 'DROP TABLE sys.enabled$indexes'; 22:21:44 78 22:21:44 79 EXCEPTION 22:21:44 80 WHEN NO_DATA_FOUND THEN NULL; 22:21:44 81 22:21:44 82 END; 22:21:44 83 / PL/SQL procedure successfully completed. Elapsed: 00:00:00.54 22:21:44 SQL> 22:21:44 SQL> DROP function local_enquote_name; Function dropped. Elapsed: 00:00:00.03 22:21:44 SQL> SET serveroutput off 22:21:44 SQL> 22:21:44 SQL> 22:21:44 SQL> Rem ===================================================================== 22:21:44 SQL> Rem Run component validation procedure 22:21:44 SQL> Rem ===================================================================== 22:21:44 SQL> 22:21:44 SQL> SET serveroutput on 22:21:44 SQL> EXECUTE dbms_registry_sys.validate_components; PL/SQL procedure successfully completed. Elapsed: 00:00:18.64 22:22:03 SQL> SET serveroutput off 22:22:03 SQL> 22:22:03 SQL> 22:22:03 SQL> Rem =========================================================================== 22:22:03 SQL> Rem END utlrp.sql 22:22:03 SQL> Rem =========================================================================== 22:22:03 SQL> 22:22:03 SQL> alter pluggable database "&pdbname" close immediate instances=all; Pluggable database altered. Elapsed: 00:00:40.73 22:22:44 SQL> alter system flush shared_pool; System altered. Elapsed: 00:00:00.09 22:22:44 SQL> alter pluggable database "&pdbname" open upgrade; Pluggable database altered. Elapsed: 00:00:03.38 22:22:47 SQL> 22:22:47 SQL> 22:22:47 SQL> 22:22:47 SQL> -- handle Resource Manager plan conversions 22:22:47 SQL> exec dbms_rmin.rm$_noncdb_to_pdb; PL/SQL procedure successfully completed. Elapsed: 00:00:01.87 22:22:49 SQL> 22:22:49 SQL> -- delete SYS$BACKGROUND and SYS$USERS from service$ 22:22:49 SQL> delete from sys.service$ where name in ('SYS$BACKGROUND', 'SYS$USERS'); 0 rows deleted. Elapsed: 00:00:00.06 22:22:49 SQL> commit; Commit complete. Elapsed: 00:00:00.00 22:22:49 SQL> 22:22:49 SQL> @@?/rdbms/admin/loc_to_common4.sql 2 22:22:49 SQL> Rem 22:22:49 SQL> Rem $Header: rdbms/admin/loc_to_common4.sql /st_rdbms_12.2.0.1.0/1 2016/09/11 09:42:40 pyam Exp $ 22:22:49 SQL> Rem 22:22:49 SQL> Rem loc_to_common4.sql 22:22:49 SQL> Rem 22:22:49 SQL> Rem Copyright (c) 2014, 2016, Oracle and/or its affiliates. 22:22:49 SQL> Rem All rights reserved. 22:22:49 SQL> Rem 22:22:49 SQL> Rem NAME 22:22:49 SQL> Rem loc_to_common4.sql - helper script for converting local to common 22:22:49 SQL> Rem 22:22:49 SQL> Rem DESCRIPTION 22:22:49 SQL> Rem Does the fourth set of operations needed to convert local to common. 22:22:49 SQL> Rem Cleans up views created in loc_to_common1.sql 22:22:49 SQL> Rem 22:22:49 SQL> Rem NOTES 22:22:49 SQL> Rem Called by noncdb_to_pdb.sql, apex_to_common.sql, pdb_to_apppdb.sql 22:22:49 SQL> Rem 22:22:49 SQL> Rem 22:22:49 SQL> Rem BEGIN SQL_FILE_METADATA 22:22:49 SQL> Rem SQL_SOURCE_FILE: rdbms/admin/loc_to_common4.sql 22:22:49 SQL> Rem SQL_SHIPPED_FILE: rdbms/admin/loc_to_common4.sql 22:22:49 SQL> Rem SQL_PHASE: LOC_TO_COMMON4 22:22:49 SQL> Rem SQL_STARTUP_MODE: NORMAL 22:22:49 SQL> Rem SQL_IGNORABLE_ERRORS: NONE 22:22:49 SQL> Rem SQL_CALLING_FILE: rdbms/admin/noncdb_to_pdb.sql 22:22:49 SQL> Rem END SQL_FILE_METADATA 22:22:49 SQL> Rem 22:22:49 SQL> Rem MODIFIED (MM/DD/YY) 22:22:49 SQL> Rem pyam 09/08/16 - RTI 19633354: remove duplicate set &scriptparam 22:22:49 SQL> Rem sankejai 01/22/16 - 16076261: session parameters scoped to container 22:22:49 SQL> Rem pyam 12/22/15 - 21927236: rename pdb_to_fedpdb to pdb_to_apppdb 22:22:49 SQL> Rem thbaby 09/02/15 - Bug 21774247: handle COMMON_DATA 22:22:49 SQL> Rem pyam 07/01/15 - set _APPLICATION_SCRIPT if applicable 22:22:49 SQL> Rem vperiwal 03/26/15 - 20172151: add immediate instances = all for close 22:22:49 SQL> Rem surman 01/08/15 - 19475031: Update SQL metadata 22:22:49 SQL> Rem pyam 09/16/14 - Helper script #2 for converting local objects to 22:22:49 SQL> Rem common in a CDB environment. 22:22:49 SQL> Rem pyam 09/16/14 - Created 22:22:49 SQL> Rem 22:22:49 SQL> 22:22:49 SQL> COLUMN scriptparam NEW_VALUE scriptparam 22:22:49 SQL> select decode(&&1, 6, '"_APPLICATION_SCRIPT"', '"_ORACLE_SCRIPT"') scriptparam 22:22:49 2 from dual; SCRIPTPARAM ---------------- "_ORACLE_SCRIPT" 1 row selected. Elapsed: 00:00:00.00 22:22:49 SQL> alter session set &scriptparam=true; Session altered. Elapsed: 00:00:00.00 22:22:49 SQL> 22:22:49 SQL> drop view sys.cdb$tables&pdbid; View dropped. Elapsed: 00:00:00.38 22:22:49 SQL> drop view sys.cdb$objects&pdbid; View dropped. Elapsed: 00:00:00.03 22:22:49 SQL> drop view sys.cdb$types&pdbid; View dropped. Elapsed: 00:00:00.01 22:22:49 SQL> drop view sys.cdb$common_root_objects&pdbid; View dropped. Elapsed: 00:00:00.01 22:22:49 SQL> drop view sys.cdb$cdata_root_tables&pdbid; View dropped. Elapsed: 00:00:00.02 22:22:49 SQL> drop view sys.cdb$cdata_root_views&pdbid; View dropped. Elapsed: 00:00:00.01 22:22:49 SQL> drop view sys.cdb$cmn_root_types&pdbid; View dropped. Elapsed: 00:00:00.01 22:22:49 SQL> drop view sys.cdb$common_users&pdbid; View dropped. Elapsed: 00:00:00.01 22:22:49 SQL> drop view sys.cdb$rootdeps&pdbid; View dropped. Elapsed: 00:00:00.01 22:22:49 SQL> drop view sys.cdb$commonsysprivs&pdbid; View dropped. Elapsed: 00:00:00.01 22:22:49 SQL> drop view sys.cdb$commonrolegrants&pdbid; View dropped. Elapsed: 00:00:00.01 22:22:49 SQL> drop view sys.cdb$commonobjprivs&pdbid; View dropped. Elapsed: 00:00:00.02 22:22:49 SQL> 22:22:49 SQL> alter session set container=&rootcon; Session altered. Elapsed: 00:00:00.11 22:22:50 SQL> drop view sys.cdb$common_root_objects&pdbid; View dropped. Elapsed: 00:00:00.28 22:22:50 SQL> drop view sys.cdb$cdata_root_tables&pdbid; View dropped. Elapsed: 00:00:00.03 22:22:50 SQL> drop view sys.cdb$cdata_root_views&pdbid; View dropped. Elapsed: 00:00:00.03 22:22:50 SQL> drop view sys.cdb$cmn_root_types&pdbid; View dropped. Elapsed: 00:00:00.02 22:22:50 SQL> drop view sys.cdb$common_users&pdbid; View dropped. Elapsed: 00:00:00.01 22:22:50 SQL> drop view sys.cdb$rootdeps&pdbid; View dropped. Elapsed: 00:00:00.18 22:22:50 SQL> drop view sys.cdb$commonsysprivs&pdbid; View dropped. Elapsed: 00:00:00.03 22:22:50 SQL> drop view sys.cdb$commonrolegrants&pdbid; View dropped. Elapsed: 00:00:00.01 22:22:50 SQL> drop view sys.cdb$commonobjprivs&pdbid; View dropped. Elapsed: 00:00:00.03 22:22:50 SQL> 22:22:50 SQL> alter session set container="&pdbname"; Session altered. Elapsed: 00:00:00.28 22:22:50 SQL> alter session set &scriptparam=false; Session altered. Elapsed: 00:00:00.00 22:22:50 SQL> 22:22:50 SQL> -- reset the parameters at the end of the script 22:22:50 SQL> exec dbms_pdb.noncdb_to_pdb(&&1); PL/SQL procedure successfully completed. Elapsed: 00:00:00.06 22:22:51 SQL> 22:22:51 SQL> alter session set &scriptparam=true; Session altered. Elapsed: 00:00:00.00 22:22:51 SQL> 22:22:51 SQL> Rem &&1 is 6 if fed 22:22:51 SQL> 22:22:51 SQL> COLUMN fedobjflag NEW_VALUE fedobjflag 22:22:51 SQL> select decode(&&1, 6, '134217728', '0') fedobjflag from dual; F - 0 1 row selected. Elapsed: 00:00:00.00 22:22:51 SQL> 22:22:51 SQL> -- run ALTER TABLE UPGRADE on table dependents of common types 22:22:51 SQL> -- note this is done after noncdb_to_pdb(2), because between (1) and (2), 22:22:51 SQL> -- the driver was changed to only compute signatures 22:22:51 SQL> DECLARE 22:22:51 2 cursor c is 22:22:51 3 select u.name owner, o.name object_name 22:22:51 4 from sys.obj$ o, sys.user$ u 22:22:51 5 where o.type#=2 and u.user#=o.owner# and obj# in 22:22:51 6 (select d_obj# from sys.dependency$ d, sys.obj$ typo where 22:22:51 7 typo.type#=13 and typo.obj#=d.p_obj# and d.p_timestamp <> typo.stime and 22:22:51 8 bitand(typo.flags, 196608)<>0 and 22:22:51 9 bitand(typo.flags, 134217728)=&fedobjflag); 22:22:51 10 BEGIN 22:22:51 11 FOR tab in c 22:22:51 12 LOOP 22:22:51 13 BEGIN 22:22:51 14 execute immediate 'ALTER TABLE ' || 22:22:51 15 dbms_assert.enquote_name(tab.owner, FALSE) || '.' || 22:22:51 16 dbms_assert.enquote_name(tab.object_name, FALSE) || 22:22:51 17 ' UPGRADE'; 22:22:51 18 EXCEPTION 22:22:51 19 WHEN OTHERS THEN 22:22:51 20 BEGIN 22:22:51 21 IF (sqlcode = -600 or sqlcode = -602 or sqlcode = -603) THEN 22:22:51 22 raise; 22:22:51 23 END IF; 22:22:51 24 END; 22:22:51 25 END; 22:22:51 26 END LOOP; 22:22:51 27 commit; 22:22:51 28 END; 22:22:51 29 / PL/SQL procedure successfully completed. Elapsed: 00:00:02.00 22:22:53 SQL> 22:22:53 SQL> alter session set &scriptparam=false; Session altered. Elapsed: 00:00:00.00 22:22:53 SQL> 22:22:53 SQL> alter pluggable database "&pdbname" close immediate instances=all; Pluggable database altered. Elapsed: 00:00:00.49 22:22:53 SQL> alter session set container = CDB$ROOT; Session altered. Elapsed: 00:00:00.00 22:22:53 SQL> alter system flush shared_pool; System altered. Elapsed: 00:00:00.07 22:22:53 SQL> / System altered. Elapsed: 00:00:00.00 22:22:53 SQL> / System altered. Elapsed: 00:00:00.01 22:22:53 SQL> alter session set container = "&pdbname"; Session altered. Elapsed: 00:00:00.00 22:22:53 SQL> 22:22:53 SQL> -- leave the PDB in the same state it was when we started 22:22:53 SQL> BEGIN 22:22:53 2 execute immediate '&open_sql &restricted_state'; 22:22:53 3 EXCEPTION 22:22:53 4 WHEN OTHERS THEN 22:22:53 5 BEGIN 22:22:53 6 IF (sqlcode <> -900) THEN 22:22:53 7 RAISE; 22:22:53 8 END IF; 22:22:53 9 END; 22:22:53 10 END; 22:22:53 11 / PL/SQL procedure successfully completed. Elapsed: 00:00:00.34 22:22:53 SQL> 22:22:53 SQL> WHENEVER SQLERROR CONTINUE; 22:22:53 SQL> 22:22:53 SQL> 22:22:53 SQL> 22:22:53 SQL> -- restore old settings 22:22:53 SQL> START ncdb2pdb.settings.sql 22:22:53 SQL> set appinfo OFF 22:22:54 SQL> set appinfo "SQL*Plus" 22:22:54 SQL> set arraysize 15 22:22:54 SQL> set autocommit OFF 22:22:54 SQL> set autoprint OFF 22:22:54 SQL> set autorecovery OFF 22:22:54 SQL> set autotrace OFF 22:22:54 SQL> set blockterminator "." 22:22:54 SQL> set cmdsep OFF 22:22:54 SQL> set colinvisible OFF 22:22:54 SQL> set colsep " " 22:22:54 SQL> set compatibility NATIVE 22:22:54 SQL> set concat "." 22:22:54 SQL> set copycommit 0 22:22:54 SQL> set copytypecheck ON 22:22:54 SQL> set define "&" 22:22:54 SQL> set describe DEPTH 1 LINENUM OFF INDENT ON 22:22:54 SQL> set echo ON 22:22:54 SQL> set editfile "afiedt.buf" 22:22:54 SQL> set embedded OFF 22:22:54 SQL> set escape OFF 22:22:54 SQL> set escchar OFF 22:22:54 SQL> set exitcommit ON 22:22:54 SQL> set feedback ON 22:22:54 SQL> set flagger OFF 22:22:54 SQL> set flush ON 22:22:54 SQL> set fullcolname OFF 22:22:54 SQL> set heading ON 22:22:54 SQL> set headsep "|" 22:22:54 SQL> set linesize 80 22:22:54 SQL> set lobprefetch 0 22:22:54 SQL> set logsource "" 22:22:54 SQL> set long 80 22:22:54 SQL> set longchunksize 80 22:22:54 SQL> set markup HTML OFF HEAD "SQL*Plus Report" BODY "" TABLE "border='1' width='90%' align='center' summary='Script output'" SPOOL OFF ENTMAP ON PRE OFF 22:22:54 SQL> set markup CSV OFF DELIMITER , QUOTE ON 22:22:54 SQL> set newpage 1 22:22:54 SQL> set null "" 22:22:54 SQL> set numformat "" 22:22:54 SQL> set numwidth 10 22:22:54 SQL> set pagesize 100 22:22:54 SQL> set pause OFF 22:22:54 SQL> set recsep WRAP 22:22:54 SQL> set recsepchar " " 22:22:54 SQL> set rowprefetch 1 22:22:54 SQL> set securedcol OFF 22:22:54 SQL> set serveroutput ON SIZE UNLIMITED FORMAT WORD_WRAPPED 22:22:54 SQL> set shiftinout invisible 22:22:54 SQL> set showmode OFF 22:22:54 SQL> set sqlblanklines OFF 22:22:54 SQL> set sqlcase MIXED 22:22:54 SQL> set sqlcontinue "> " 22:22:54 SQL> set sqlnumber ON 22:22:54 SQL> set sqlpluscompatibility 12.2.0 22:22:54 SQL> set sqlprefix "#" 22:22:54 SQL> set sqlprompt "SQL> " 22:22:54 SQL> set sqlterminator ";" 22:22:54 SQL> set statementcache 0 22:22:54 SQL> set suffix "sql" 22:22:54 SQL> set tab OFF 22:22:54 SQL> set termout ON 22:22:54 SQL> set time OFF SQL> set timing OFF SQL> set trimout ON SQL> set trimspool ON SQL> set underline "-" SQL> set verify OFF SQL> set wrap ON SQL> set xmloptimizationcheck OFF SQL> SQL>