<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://sqle.ru/index.php?action=history&amp;feed=atom&amp;title=Oracle_PL%2FSQL_Tutorial%2FFunction_Procedure_Packages%2FUtility_Package</id>
		<title>Oracle PL/SQL Tutorial/Function Procedure Packages/Utility Package - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://sqle.ru/index.php?action=history&amp;feed=atom&amp;title=Oracle_PL%2FSQL_Tutorial%2FFunction_Procedure_Packages%2FUtility_Package"/>
		<link rel="alternate" type="text/html" href="http://sqle.ru/index.php?title=Oracle_PL/SQL_Tutorial/Function_Procedure_Packages/Utility_Package&amp;action=history"/>
		<updated>2026-05-26T13:48:32Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://sqle.ru/index.php?title=Oracle_PL/SQL_Tutorial/Function_Procedure_Packages/Utility_Package&amp;diff=4396&amp;oldid=prev</id>
		<title> в 13:45, 26 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://sqle.ru/index.php?title=Oracle_PL/SQL_Tutorial/Function_Procedure_Packages/Utility_Package&amp;diff=4396&amp;oldid=prev"/>
				<updated>2010-05-26T13:45:46Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 13:45, 26 мая 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
			</entry>

	<entry>
		<id>http://sqle.ru/index.php?title=Oracle_PL/SQL_Tutorial/Function_Procedure_Packages/Utility_Package&amp;diff=4397&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://sqle.ru/index.php?title=Oracle_PL/SQL_Tutorial/Function_Procedure_Packages/Utility_Package&amp;diff=4397&amp;oldid=prev"/>
				<updated>2010-05-26T10:11:46Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Audit package==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create table audit_trail&lt;br /&gt;
  2  ( username  varchar2(30),&lt;br /&gt;
  3    pk        number,&lt;br /&gt;
  4    attribute varchar2(30),&lt;br /&gt;
  5    dataum    varchar2(255),&lt;br /&gt;
  6    timestamp date&lt;br /&gt;
  7  )&lt;br /&gt;
  8  /&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create or replace package audit_trail_pkg&lt;br /&gt;
  2  as&lt;br /&gt;
  3      function record( p_pk in number,&lt;br /&gt;
  4                       p_attr in varchar2,&lt;br /&gt;
  5                       p_dataum in number ) return number;&lt;br /&gt;
  6      function record( p_pk in number,&lt;br /&gt;
  7                       p_attr in varchar2,&lt;br /&gt;
  8                       p_dataum in varchar2 ) return varchar2;&lt;br /&gt;
  9      function record( p_pk in number,&lt;br /&gt;
 10                       p_attr in varchar2,&lt;br /&gt;
 11                       p_dataum in date ) return date;&lt;br /&gt;
 12  end;&lt;br /&gt;
 13  /&lt;br /&gt;
Package created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create or replace package body audit_trail_pkg&lt;br /&gt;
  2  as&lt;br /&gt;
  3&lt;br /&gt;
  4  procedure log( p_pk in number,&lt;br /&gt;
  5                 p_attr in varchar2,&lt;br /&gt;
  6                 p_dataum in varchar2 )&lt;br /&gt;
  7  as&lt;br /&gt;
  8      pragma autonomous_transaction;&lt;br /&gt;
  9  begin&lt;br /&gt;
 10      insert into audit_trail values&lt;br /&gt;
 11      ( user, p_pk, p_attr, p_dataum, sysdate );&lt;br /&gt;
 12      commit;&lt;br /&gt;
 13  end;&lt;br /&gt;
 14&lt;br /&gt;
 15  function record( p_pk in number,&lt;br /&gt;
 16                   p_attr in varchar2,&lt;br /&gt;
 17                   p_dataum in number ) return number&lt;br /&gt;
 18  is&lt;br /&gt;
 19  begin&lt;br /&gt;
 20      log( p_pk, p_attr, p_dataum );&lt;br /&gt;
 21      return p_dataum;&lt;br /&gt;
 22  end;&lt;br /&gt;
 23&lt;br /&gt;
 24  function record( p_pk in number,&lt;br /&gt;
 25                   p_attr in varchar2,&lt;br /&gt;
 26                   p_dataum in varchar2 ) return varchar2&lt;br /&gt;
 27  is&lt;br /&gt;
 28  begin&lt;br /&gt;
 29      log( p_pk, p_attr, p_dataum );&lt;br /&gt;
 30      return p_dataum;&lt;br /&gt;
 31  end;&lt;br /&gt;
 32&lt;br /&gt;
 33  function record( p_pk in number,&lt;br /&gt;
 34                   p_attr in varchar2,&lt;br /&gt;
 35                   p_dataum in date ) return date&lt;br /&gt;
 36  is&lt;br /&gt;
 37  begin&lt;br /&gt;
 38      log( p_pk, p_attr,&lt;br /&gt;
 39           to_char(p_dataum,&amp;quot;dd-mon-yyyy hh24:mi:ss&amp;quot;) );&lt;br /&gt;
 40      return p_dataum;&lt;br /&gt;
 41  end;&lt;br /&gt;
 42&lt;br /&gt;
 43  end;&lt;br /&gt;
 44  /&lt;br /&gt;
Package body created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE EMP (EMPNO NUMBER(4) NOT NULL,&lt;br /&gt;
  2                    ENAME VARCHAR2(10),&lt;br /&gt;
  3                    JOB VARCHAR2(9),&lt;br /&gt;
  4                    MGR NUMBER(4),&lt;br /&gt;
  5                    HIREDATE DATE,&lt;br /&gt;
  6                    SAL NUMBER(7, 2),&lt;br /&gt;
  7                    COMM NUMBER(7, 2),&lt;br /&gt;
  8                    DEPTNO NUMBER(2));&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7369, &amp;quot;SMITH&amp;quot;, &amp;quot;CLERK&amp;quot;,    7902, TO_DATE(&amp;quot;17-DEC-1980&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 800, NULL, 20);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7499, &amp;quot;ALLEN&amp;quot;, &amp;quot;SALESMAN&amp;quot;, 7698, TO_DATE(&amp;quot;20-FEB-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 1600, 300, 30);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7521, &amp;quot;WARD&amp;quot;,  &amp;quot;SALESMAN&amp;quot;, 7698, TO_DATE(&amp;quot;22-FEB-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 1250, 500, 30);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7566, &amp;quot;JONES&amp;quot;, &amp;quot;MANAGER&amp;quot;,  7839, TO_DATE(&amp;quot;2-APR-1981&amp;quot;,  &amp;quot;DD-MON-YYYY&amp;quot;), 2975, NULL, 20);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7654, &amp;quot;MARTIN&amp;quot;, &amp;quot;SALESMAN&amp;quot;, 7698,TO_DATE(&amp;quot;28-SEP-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 1250, 1400, 30);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7698, &amp;quot;BLAKE&amp;quot;, &amp;quot;MANAGER&amp;quot;, 7839,TO_DATE(&amp;quot;1-MAY-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 2850, NULL, 30);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7782, &amp;quot;CLARK&amp;quot;, &amp;quot;MANAGER&amp;quot;, 7839,TO_DATE(&amp;quot;9-JUN-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 2450, NULL, 10);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7788, &amp;quot;SCOTT&amp;quot;, &amp;quot;ANALYST&amp;quot;, 7566,TO_DATE(&amp;quot;09-DEC-1982&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 3000, NULL, 20);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7839, &amp;quot;KING&amp;quot;, &amp;quot;PRESIDENT&amp;quot;, NULL,TO_DATE(&amp;quot;17-NOV-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 5000, NULL, 10);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7844, &amp;quot;TURNER&amp;quot;, &amp;quot;SALESMAN&amp;quot;, 7698,TO_DATE(&amp;quot;8-SEP-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 1500, 0, 30);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7876, &amp;quot;ADAMS&amp;quot;, &amp;quot;CLERK&amp;quot;, 7788,TO_DATE(&amp;quot;12-JAN-1983&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 1100, NULL, 20);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7900, &amp;quot;JAMES&amp;quot;, &amp;quot;CLERK&amp;quot;, 7698,TO_DATE(&amp;quot;3-DEC-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 950, NULL, 30);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7902, &amp;quot;FORD&amp;quot;, &amp;quot;ANALYST&amp;quot;, 7566,TO_DATE(&amp;quot;3-DEC-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 3000, NULL, 20);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7934, &amp;quot;MILLER&amp;quot;, &amp;quot;CLERK&amp;quot;, 7782,TO_DATE(&amp;quot;23-JAN-1982&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 1300, NULL, 10);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create or replace view emp_v&lt;br /&gt;
  2  as&lt;br /&gt;
  3  select empno , ename, job,mgr,&lt;br /&gt;
  4         audit_trail_pkg.record( empno, &amp;quot;sal&amp;quot;, sal ) sal,&lt;br /&gt;
  5         audit_trail_pkg.record( empno, &amp;quot;comm&amp;quot;, comm ) comm,&lt;br /&gt;
  6         audit_trail_pkg.record( empno, &amp;quot;hiredate&amp;quot;, hiredate ) hiredate,&lt;br /&gt;
  7         deptno&lt;br /&gt;
  8    from emp&lt;br /&gt;
  9  /&lt;br /&gt;
View created.&lt;br /&gt;
SQL&amp;gt; select empno, ename, hiredate, sal, comm, job from emp_v where ename = &amp;quot;KING&amp;quot;;&lt;br /&gt;
     EMPNO ENAME      HIREDATE         SAL       COMM JOB&lt;br /&gt;
---------- ---------- --------- ---------- ---------- ---------&lt;br /&gt;
      7839 KING       17-NOV-81       5000            PRESIDENT&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table audit_trail;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt; drop table emp;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Check the code version==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE PACKAGE globals IS&lt;br /&gt;
  2     FUNCTION what_version RETURN VARCHAR2;&lt;br /&gt;
  3     PRAGMA RESTRICT_REFERENCES(what_version, WNDS, WNPS, RNDS);&lt;br /&gt;
  4  END globals;&lt;br /&gt;
  5  /&lt;br /&gt;
Package created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE PACKAGE BODY globals IS&lt;br /&gt;
  2     pv_version_txt VARCHAR2(30) := &amp;quot;19980519.1&amp;quot;;&lt;br /&gt;
  3     FUNCTION what_version RETURN VARCHAR2 IS&lt;br /&gt;
  4     BEGIN&lt;br /&gt;
  5        RETURN pv_version_txt;&lt;br /&gt;
  6     END; -- what_version&lt;br /&gt;
  7  END globals;&lt;br /&gt;
  8  /&lt;br /&gt;
Package body created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; SET SERVEROUTPUT ON SIZE 1000000&lt;br /&gt;
SQL&amp;gt; DECLARE&lt;br /&gt;
  2     lv_dml_statement_txt   VARCHAR2(100);&lt;br /&gt;
  3     lv_package_version_txt VARCHAR2(100);&lt;br /&gt;
  4     lv_record_count_num    PLS_INTEGER;&lt;br /&gt;
  5     lv_version_cursor_num  PLS_INTEGER;&lt;br /&gt;
  6     CURSOR cur_source IS&lt;br /&gt;
  7        SELECT DISTINCT name&lt;br /&gt;
  8        FROM   user_source&lt;br /&gt;
  9        WHERE  type = &amp;quot;PACKAGE BODY&amp;quot;;&lt;br /&gt;
 10  BEGIN&lt;br /&gt;
 11     FOR cur_source_rec IN cur_source LOOP&lt;br /&gt;
 12        lv_version_cursor_num := DBMS_SQL.OPEN_CURSOR;&lt;br /&gt;
 13        lv_dml_statement_txt := &amp;quot;SELECT &amp;quot; || cur_source_rec.name || &amp;quot;.what_version FROM DUAL&amp;quot;;&lt;br /&gt;
 14        BEGIN&lt;br /&gt;
 15           DBMS_SQL.PARSE(lv_version_cursor_num, lv_dml_statement_txt, DBMS_SQL.NATIVE);&lt;br /&gt;
 16           DBMS_SQL.DEFINE_COLUMN(lv_version_cursor_num, 1, lv_package_version_txt, 100);&lt;br /&gt;
 17           lv_record_count_num := DBMS_SQL.EXECUTE(lv_version_cursor_num);&lt;br /&gt;
 18           IF DBMS_SQL.FETCH_ROWS(lv_version_cursor_num) &amp;gt; 0 THEN&lt;br /&gt;
 19              DBMS_SQL.COLUMN_VALUE(lv_version_cursor_num, 1, lv_package_version_txt);&lt;br /&gt;
 20           ELSE&lt;br /&gt;
 21              lv_package_version_txt := &amp;quot;Version Reporting Failed&amp;quot;;&lt;br /&gt;
 22           END IF;&lt;br /&gt;
 23        EXCEPTION&lt;br /&gt;
 24           WHEN OTHERS THEN&lt;br /&gt;
 25              lv_package_version_txt := &amp;quot;Version Reporting Not &amp;quot; || &amp;quot;Supported&amp;quot;;&lt;br /&gt;
 26        END;&lt;br /&gt;
 27        DBMS_OUTPUT.PUT_LINE(LOWER(cur_source_rec.name) || &amp;quot;: &amp;quot; || lv_package_version_txt);&lt;br /&gt;
 28        DBMS_SQL.CLOSE_CURSOR(lv_version_cursor_num);&lt;br /&gt;
 29     END LOOP;&lt;br /&gt;
 30  END;&lt;br /&gt;
 31  /&lt;br /&gt;
gender_ts: Version Reporting Not Supported&lt;br /&gt;
demo_pkg: Version Reporting Not Supported&lt;br /&gt;
emp_coll_pkg: Version Reporting Not Supported&lt;br /&gt;
book_info: Version Reporting Not Supported&lt;br /&gt;
hr_app: Version Reporting Not Supported&lt;br /&gt;
onecur: Version Reporting Not Supported&lt;br /&gt;
empinfo: Version Reporting Not Supported&lt;br /&gt;
employees_pkg: Version Reporting Not Supported&lt;br /&gt;
dates: Version Reporting Not Supported&lt;br /&gt;
classpackage: Version Reporting Not Supported&lt;br /&gt;
plw5000: Version Reporting Not Supported&lt;br /&gt;
grp: Version Reporting Not Supported&lt;br /&gt;
desccols: Version Reporting Not Supported&lt;br /&gt;
fixer: Version Reporting Not Supported&lt;br /&gt;
process_vacations: Version Reporting Not Supported&lt;br /&gt;
xbuff: Version Reporting Not Supported&lt;br /&gt;
timer: Version Reporting Not Supported&lt;br /&gt;
srpkg1: Version Reporting Not Supported&lt;br /&gt;
bt: Version Reporting Not Supported&lt;br /&gt;
oracle_error_info: Version Reporting Not Supported&lt;br /&gt;
test_pack: Version Reporting Not Supported&lt;br /&gt;
order_entry: Version Reporting Not Supported&lt;br /&gt;
procesorders: Version Reporting Not Supported&lt;br /&gt;
pipe_output: Version Reporting Not Supported&lt;br /&gt;
overload: Version Reporting Not Supported&lt;br /&gt;
flog: Version Reporting Not Supported&lt;br /&gt;
audit_trail_pkg: Version Reporting Not Supported&lt;br /&gt;
dyn_demo: Version Reporting Not Supported&lt;br /&gt;
p1: Version Reporting Not Supported&lt;br /&gt;
workplace_type_ts: Version Reporting Not Supported&lt;br /&gt;
scopes: Version Reporting Not Supported&lt;br /&gt;
rfpkg2: Version Reporting Not Supported&lt;br /&gt;
srpkg2: Version Reporting Not Supported&lt;br /&gt;
valstd: Version Reporting Not Supported&lt;br /&gt;
nocopy_test: Version Reporting Not Supported&lt;br /&gt;
favorites_pkg: Version Reporting Not Supported&lt;br /&gt;
pack1: Version Reporting Not Supported&lt;br /&gt;
dowpack: Version Reporting Not Supported&lt;br /&gt;
pack2: Version Reporting Not Supported&lt;br /&gt;
globals: 19980519.1&lt;br /&gt;
mypackage1: Version Reporting Not Supported&lt;br /&gt;
guestbook: Version Reporting Not Supported&lt;br /&gt;
worker_ts: Version Reporting Not Supported&lt;br /&gt;
worker_type_ts: Version Reporting Not Supported&lt;br /&gt;
valerr: Version Reporting Not Supported&lt;br /&gt;
mydate: Version Reporting Not Supported&lt;br /&gt;
orgmaster: Version Reporting Not Supported&lt;br /&gt;
nocopypkg: Version Reporting Not Supported&lt;br /&gt;
calc_pkg: Version Reporting Not Supported&lt;br /&gt;
thisuser: Version Reporting Not Supported&lt;br /&gt;
my_package: Version Reporting Not Supported&lt;br /&gt;
employee_pkg: Version Reporting Not Supported&lt;br /&gt;
diana_size: Version Reporting Not Supported&lt;br /&gt;
process_emps: Version Reporting Not Supported&lt;br /&gt;
demo2: Version Reporting Not Supported&lt;br /&gt;
employee_types: Version Reporting Not Supported&lt;br /&gt;
salespkg: Version Reporting Not Supported&lt;br /&gt;
orgmaster2: Version Reporting Not Supported&lt;br /&gt;
authors_pkg: Version Reporting Not Supported&lt;br /&gt;
anynums_pkg: Version Reporting Not Supported&lt;br /&gt;
bidir: Version Reporting Not Supported&lt;br /&gt;
fullname_pkg: Version Reporting Not Supported&lt;br /&gt;
clean_schema: Version Reporting Not Supported&lt;br /&gt;
sessval: Version Reporting Not Supported&lt;br /&gt;
datecalc: Version Reporting Not Supported&lt;br /&gt;
my_date: Version Reporting Not Supported&lt;br /&gt;
genders: Version Reporting Not Supported&lt;br /&gt;
dynsql: Version Reporting Not Supported&lt;br /&gt;
multdim: Version Reporting Not Supported&lt;br /&gt;
inline_pkg: Version Reporting Not Supported&lt;br /&gt;
parameters: Version Reporting Not Supported&lt;br /&gt;
rfpkg: Version Reporting Not Supported&lt;br /&gt;
dynvar: Version Reporting Not Supported&lt;br /&gt;
name_pkg: Version Reporting Not Supported&lt;br /&gt;
pkg_vars: Version Reporting Not Supported&lt;br /&gt;
my_pkg: Version Reporting Not Supported&lt;br /&gt;
not_mypackage2: Version Reporting Not Supported&lt;br /&gt;
outputpackage: Version Reporting Not Supported&lt;br /&gt;
pizza_pkg: Version Reporting Not Supported&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Counter package==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create or replace package counter is&lt;br /&gt;
  2   procedure reset;&lt;br /&gt;
  3   procedure inc;&lt;br /&gt;
  4   procedure show;&lt;br /&gt;
  5   end;&lt;br /&gt;
  6  /&lt;br /&gt;
Package created.&lt;br /&gt;
SQL&amp;gt; create or replace package body counter is&lt;br /&gt;
  2       cnt pls_integer := 0;&lt;br /&gt;
  3       procedure reset is&lt;br /&gt;
  4       begin&lt;br /&gt;
  5           cnt := 0;&lt;br /&gt;
  6       end;&lt;br /&gt;
  7&lt;br /&gt;
  8       procedure inc is&lt;br /&gt;
  9       begin&lt;br /&gt;
 10          cnt := cnt + 1;&lt;br /&gt;
 11       end;&lt;br /&gt;
 12&lt;br /&gt;
 13       procedure show is&lt;br /&gt;
 14       begin&lt;br /&gt;
 15           dbms_output.put_line(&amp;quot;Execution Count: &amp;quot;||cnt);&lt;br /&gt;
 16       end;&lt;br /&gt;
 17   end;&lt;br /&gt;
 18  /&lt;br /&gt;
Package body created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Create a package to handle display, update, delete and insert operations==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE EMP (EMPNO NUMBER(4) NOT NULL,&lt;br /&gt;
  2                    ENAME VARCHAR2(10),&lt;br /&gt;
  3                    JOB VARCHAR2(9),&lt;br /&gt;
  4                    MGR NUMBER(4),&lt;br /&gt;
  5                    HIREDATE DATE,&lt;br /&gt;
  6                    SAL NUMBER(7, 2),&lt;br /&gt;
  7                    COMM NUMBER(7, 2),&lt;br /&gt;
  8                    DEPTNO NUMBER(2));&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7369, &amp;quot;SMITH&amp;quot;, &amp;quot;CLERK&amp;quot;,    7902, TO_DATE(&amp;quot;17-DEC-1980&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 800, NULL, 20);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7499, &amp;quot;ALLEN&amp;quot;, &amp;quot;SALESMAN&amp;quot;, 7698, TO_DATE(&amp;quot;20-FEB-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 1600, 300, 30);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7521, &amp;quot;WARD&amp;quot;,  &amp;quot;SALESMAN&amp;quot;, 7698, TO_DATE(&amp;quot;22-FEB-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 1250, 500, 30);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7566, &amp;quot;JONES&amp;quot;, &amp;quot;MANAGER&amp;quot;,  7839, TO_DATE(&amp;quot;2-APR-1981&amp;quot;,  &amp;quot;DD-MON-YYYY&amp;quot;), 2975, NULL, 20);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7654, &amp;quot;MARTIN&amp;quot;, &amp;quot;SALESMAN&amp;quot;, 7698,TO_DATE(&amp;quot;28-SEP-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 1250, 1400, 30);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7698, &amp;quot;BLAKE&amp;quot;, &amp;quot;MANAGER&amp;quot;, 7839,TO_DATE(&amp;quot;1-MAY-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 2850, NULL, 30);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7782, &amp;quot;CLARK&amp;quot;, &amp;quot;MANAGER&amp;quot;, 7839,TO_DATE(&amp;quot;9-JUN-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 2450, NULL, 10);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7788, &amp;quot;SCOTT&amp;quot;, &amp;quot;ANALYST&amp;quot;, 7566,TO_DATE(&amp;quot;09-DEC-1982&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 3000, NULL, 20);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7839, &amp;quot;KING&amp;quot;, &amp;quot;PRESIDENT&amp;quot;, NULL,TO_DATE(&amp;quot;17-NOV-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 5000, NULL, 10);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7844, &amp;quot;TURNER&amp;quot;, &amp;quot;SALESMAN&amp;quot;, 7698,TO_DATE(&amp;quot;8-SEP-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 1500, 0, 30);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7876, &amp;quot;ADAMS&amp;quot;, &amp;quot;CLERK&amp;quot;, 7788,TO_DATE(&amp;quot;12-JAN-1983&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 1100, NULL, 20);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7900, &amp;quot;JAMES&amp;quot;, &amp;quot;CLERK&amp;quot;, 7698,TO_DATE(&amp;quot;3-DEC-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 950, NULL, 30);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7902, &amp;quot;FORD&amp;quot;, &amp;quot;ANALYST&amp;quot;, 7566,TO_DATE(&amp;quot;3-DEC-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 3000, NULL, 20);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7934, &amp;quot;MILLER&amp;quot;, &amp;quot;CLERK&amp;quot;, 7782,TO_DATE(&amp;quot;23-JAN-1982&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 1300, NULL, 10);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE DEPT (DEPTNO NUMBER(2),DNAME VARCHAR2(14),LOC VARCHAR2(13) );&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO DEPT VALUES (10, &amp;quot;ACCOUNTING&amp;quot;, &amp;quot;NEW YORK&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO DEPT VALUES (20, &amp;quot;RESEARCH&amp;quot;, &amp;quot;DALLAS&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO DEPT VALUES (30, &amp;quot;SALES&amp;quot;, &amp;quot;CHICAGO&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO DEPT VALUES (40, &amp;quot;OPERATIONS&amp;quot;, &amp;quot;BOSTON&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create or replace package hr_app&lt;br /&gt;
  2  as&lt;br /&gt;
  3      procedure listEmps;&lt;br /&gt;
  4      procedure updateSal;&lt;br /&gt;
  5      procedure deleteAll;&lt;br /&gt;
  6      procedure insertNew( p_deptno in number );&lt;br /&gt;
  7  end;&lt;br /&gt;
  8  /&lt;br /&gt;
Package created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create or replace package body hr_app as&lt;br /&gt;
  2  procedure listEmps&lt;br /&gt;
  3  as&lt;br /&gt;
  4      l_cnt number default 0;&lt;br /&gt;
  5  begin&lt;br /&gt;
  6      for x in ( select ename, sal, dname, mgr, emp.deptno from emp, dept&lt;br /&gt;
  7                  where emp.deptno = dept.deptno )&lt;br /&gt;
  8      loop&lt;br /&gt;
  9          dbms_output.put_line( rpad(nvl(x.ename,&amp;quot;(null)&amp;quot;),10) ||&lt;br /&gt;
 10                                to_char(x.sal,&amp;quot;9,999&amp;quot;) || &amp;quot; &amp;quot; ||&lt;br /&gt;
 11                                rpad(x.dname,10) ||&lt;br /&gt;
 12                                to_char(x.mgr,&amp;quot;9999&amp;quot;) || &amp;quot; &amp;quot; ||&lt;br /&gt;
 13                                to_char(x.deptno,&amp;quot;99&amp;quot;) );&lt;br /&gt;
 14          l_cnt := l_cnt + 1;&lt;br /&gt;
 15      end loop;&lt;br /&gt;
 16      dbms_output.put_line( l_cnt || &amp;quot; rows selected&amp;quot; );&lt;br /&gt;
 17  end;&lt;br /&gt;
 18  procedure updateSal is&lt;br /&gt;
 19  begin&lt;br /&gt;
 20      update emp set sal = 9999;&lt;br /&gt;
 21      dbms_output.put_line( sql%rowcount || &amp;quot; rows updated&amp;quot; );&lt;br /&gt;
 22  end;&lt;br /&gt;
 23&lt;br /&gt;
 24  procedure deleteAll&lt;br /&gt;
 25  is&lt;br /&gt;
 26  begin&lt;br /&gt;
 27      delete from emp where empno &amp;lt;&amp;gt; sys_context(&amp;quot;Your_CTX&amp;quot;,&amp;quot;EMPNO&amp;quot; );&lt;br /&gt;
 28      dbms_output.put_line( sql%rowcount || &amp;quot; rows deleted&amp;quot; );&lt;br /&gt;
 29  end;&lt;br /&gt;
 30&lt;br /&gt;
 31  procedure insertNew( p_deptno in number )&lt;br /&gt;
 32  as&lt;br /&gt;
 33  begin&lt;br /&gt;
 34      insert into emp (empno, deptno, sal) values (123, p_deptno, 1111);&lt;br /&gt;
 35  end;&lt;br /&gt;
 36&lt;br /&gt;
 37  end hr_app;&lt;br /&gt;
 38  /&lt;br /&gt;
Package body created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; grant execute on hr_app to public&lt;br /&gt;
  2  /&lt;br /&gt;
Grant succeeded.&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Get full name package==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE PACKAGE errpkg&lt;br /&gt;
  2  IS&lt;br /&gt;
  3     PROCEDURE record_and_stop;&lt;br /&gt;
  4&lt;br /&gt;
  5  END errpkg;&lt;br /&gt;
  6  /&lt;br /&gt;
Package created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE employee (&lt;br /&gt;
  2  employee_id NUMBER(38,0)&lt;br /&gt;
  3  ,deptno NUMBER(3,0) NOT NULL&lt;br /&gt;
  4  ,first_name  VARCHAR2(95) NOT NULL&lt;br /&gt;
  5  ,last_name   VARCHAR2(95) NOT NULL&lt;br /&gt;
  6  ,salary NUMBER(11,2)&lt;br /&gt;
  7  );&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE PACKAGE employee_pkg&lt;br /&gt;
  2  AS&lt;br /&gt;
  3     SUBTYPE fullname_t IS VARCHAR2 (200);&lt;br /&gt;
  4&lt;br /&gt;
  5     FUNCTION fullname (l  employee.last_name%TYPE,f  employee.first_name%TYPE)&lt;br /&gt;
  6        RETURN fullname_t;&lt;br /&gt;
  7&lt;br /&gt;
  8     FUNCTION fullname (employee_id_in IN employee.employee_id%TYPE)&lt;br /&gt;
  9        RETURN fullname_t;&lt;br /&gt;
 10  END employee_pkg;&lt;br /&gt;
 11  /&lt;br /&gt;
Package created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE PACKAGE BODY employee_pkg&lt;br /&gt;
  2  AS&lt;br /&gt;
  3     FUNCTION fullname (l employee.last_name%TYPE,f employee.first_name%TYPE)&lt;br /&gt;
  4        RETURN fullname_t&lt;br /&gt;
  5     IS&lt;br /&gt;
  6     BEGIN&lt;br /&gt;
  7        RETURN    l || &amp;quot;,&amp;quot; || f;&lt;br /&gt;
  8     END;&lt;br /&gt;
  9&lt;br /&gt;
 10     FUNCTION fullname (employee_id_in IN employee.employee_id%TYPE)&lt;br /&gt;
 11        RETURN fullname_t&lt;br /&gt;
 12     IS&lt;br /&gt;
 13        retval   fullname_t;&lt;br /&gt;
 14     BEGIN&lt;br /&gt;
 15        SELECT fullname (last_name, first_name) INTO retval&lt;br /&gt;
 16          FROM employee&lt;br /&gt;
 17         WHERE employee_id = employee_id_in;&lt;br /&gt;
 18&lt;br /&gt;
 19        RETURN retval;&lt;br /&gt;
 20     EXCEPTION&lt;br /&gt;
 21        WHEN NO_DATA_FOUND THEN RETURN NULL;&lt;br /&gt;
 22&lt;br /&gt;
 23        WHEN TOO_MANY_ROWS THEN errpkg.record_and_stop;&lt;br /&gt;
 24     END;&lt;br /&gt;
 25  END employee_pkg;&lt;br /&gt;
 26  /&lt;br /&gt;
SP2-0810: Package Body created with compilation warnings&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; DECLARE&lt;br /&gt;
  2     l_name employee_pkg.fullname_t;&lt;br /&gt;
  3     employee_id_in CONSTANT PLS_INTEGER := 1;&lt;br /&gt;
  4  BEGIN&lt;br /&gt;
  5     l_name := employee_pkg.fullname (employee_id_in);&lt;br /&gt;
  6&lt;br /&gt;
  7  END;&lt;br /&gt;
  8  /&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Match a date format==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE PACKAGE my_date&lt;br /&gt;
  2  IS&lt;br /&gt;
  3     FUNCTION get_date (dt_str IN VARCHAR2)&lt;br /&gt;
  4        RETURN DATE;&lt;br /&gt;
  5  END;&lt;br /&gt;
  6  /&lt;br /&gt;
Package created.&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE PACKAGE BODY my_date&lt;br /&gt;
  2  IS&lt;br /&gt;
  3     TYPE date_fmt_t IS TABLE OF VARCHAR2 (30) INDEX BY BINARY_INTEGER;&lt;br /&gt;
  4     target_format date_fmt_t;&lt;br /&gt;
  5&lt;br /&gt;
  6     FUNCTION test_date (dt_str IN VARCHAR2,target IN VARCHAR2) RETURN DATE&lt;br /&gt;
  7     IS&lt;br /&gt;
  8        d DATE;&lt;br /&gt;
  9     BEGIN&lt;br /&gt;
 10        RETURN TO_DATE (dt_str, target);&lt;br /&gt;
 11     EXCEPTION&lt;br /&gt;
 12        WHEN OTHERS&lt;br /&gt;
 13        THEN RETURN NULL;&lt;br /&gt;
 14     END;&lt;br /&gt;
 15&lt;br /&gt;
 16     FUNCTION get_date (dt_str IN VARCHAR2)RETURN DATE IS&lt;br /&gt;
 17        ret_val DATE DEFAULT NULL;&lt;br /&gt;
 18     BEGIN&lt;br /&gt;
 19        FOR i IN target_format.FIRST .. target_format.LAST&lt;br /&gt;
 20        LOOP&lt;br /&gt;
 21           ret_val := test_date (dt_str, target_format (i));&lt;br /&gt;
 22           EXIT WHEN ret_val IS NOT NULL;&lt;br /&gt;
 23        END LOOP;&lt;br /&gt;
 24        RETURN ret_val;&lt;br /&gt;
 25     END;&lt;br /&gt;
 26  BEGIN&lt;br /&gt;
 27     target_format (1) := &amp;quot;MM/DD&amp;quot;;&lt;br /&gt;
 28     target_format (2) := &amp;quot;MM/DD/YY&amp;quot;;&lt;br /&gt;
 29     target_format (3) := &amp;quot;MM/DD/YYYY&amp;quot;;&lt;br /&gt;
 30     target_format (4) := &amp;quot;DD-MON&amp;quot;;&lt;br /&gt;
 31     target_format (5) := &amp;quot;MON DD, YYYY&amp;quot;;&lt;br /&gt;
 32     target_format (6) := &amp;quot;MONTH DD, YYYY&amp;quot;;&lt;br /&gt;
 33     target_format (7) := &amp;quot;DD-MON-YY&amp;quot;;&lt;br /&gt;
 34     target_format (8) := &amp;quot;DD-MON-YYYY&amp;quot;;&lt;br /&gt;
 35     target_format (9) := &amp;quot;MON-DD-YYYY&amp;quot;;&lt;br /&gt;
 36  END;&lt;br /&gt;
 37  /&lt;br /&gt;
Package body created.&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Process date value==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE PACKAGE sessval IS&lt;br /&gt;
  2     PROCEDURE set_mydate (date_in IN DATE);&lt;br /&gt;
  3     FUNCTION mydate RETURN DATE;&lt;br /&gt;
  4  END sessval;&lt;br /&gt;
  5  /&lt;br /&gt;
Package created.&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE PACKAGE BODY sessval IS&lt;br /&gt;
  2     g_mydate DATE;&lt;br /&gt;
  3     PROCEDURE set_mydate (date_in IN DATE) IS&lt;br /&gt;
  4     BEGIN&lt;br /&gt;
  5        IF date_in IS NULL OR date_in &amp;gt; SYSDATE&lt;br /&gt;
  6        THEN DBMS_OUTPUT.PUT_LINE (&amp;quot;Sessval.mydate cannot be set into the future.&amp;quot;);&lt;br /&gt;
  7        ELSE DBMS_OUTPUT.PUT_LINE (&amp;quot;Current value of sessval.mydate: &amp;quot; || g_mydate);&lt;br /&gt;
  8             DBMS_OUTPUT.PUT_LINE (&amp;quot;New value of sessval.mydate: &amp;quot; || date_in);&lt;br /&gt;
  9             DBMS_OUTPUT.PUT_LINE (DBMS_UTILITY.FORMAT_CALL_STACK);&lt;br /&gt;
 10           g_mydate := date_in;&lt;br /&gt;
 11        END IF;&lt;br /&gt;
 12     END;&lt;br /&gt;
 13&lt;br /&gt;
 14     FUNCTION mydate RETURN DATE IS&lt;br /&gt;
 15     BEGIN RETURN g_mydate;&lt;br /&gt;
 16     END;&lt;br /&gt;
 17  END sessval;&lt;br /&gt;
 18  /&lt;br /&gt;
Package body created.&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE PROCEDURE test_trace&lt;br /&gt;
  2  IS&lt;br /&gt;
  3  BEGIN&lt;br /&gt;
  4     sessval.set_mydate ( NVL (sessval.mydate, SYSDATE) -100);&lt;br /&gt;
  5  END;&lt;br /&gt;
  6  /&lt;br /&gt;
Procedure created.&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Product check==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE product&lt;br /&gt;
  2  (product_id                NUMBER(7),&lt;br /&gt;
  3   product_name              VARCHAR2(50),&lt;br /&gt;
  4   short_desc                VARCHAR2(255),&lt;br /&gt;
  5   longtext_id               NUMBER(7),&lt;br /&gt;
  6   image_id                  NUMBER(7),&lt;br /&gt;
  7   suggested_wholesale_price NUMBER(11, 2),&lt;br /&gt;
  8   wholesale_units           VARCHAR2(25)&lt;br /&gt;
  9  );&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO product VALUES (10011, &amp;quot;Product A&amp;quot;, &amp;quot;BOOT&amp;quot;, 518, 1001, 150, NULL);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO product VALUES (10012, &amp;quot;Product B&amp;quot;, &amp;quot;SKI&amp;quot;, 519, 1002, 200, NULL);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO product VALUES (10013, &amp;quot;Product C&amp;quot;, &amp;quot;SKI BOOT&amp;quot;, 520, 1003, 410, NULL);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO product VALUES (10021, &amp;quot;Product D&amp;quot;, &amp;quot;POLE&amp;quot;, 528, 1011, 16.25, NULL);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO product VALUES (10022, &amp;quot;Product E&amp;quot;, &amp;quot;Cat&amp;quot;, 529, 1012, 21.95, NULL);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO product VALUES (10023, &amp;quot;Product F&amp;quot;, &amp;quot;Dog&amp;quot;, 530, 1013, 40.95, NULL);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO product VALUES (20106, &amp;quot;Product G&amp;quot;, &amp;quot;Bear&amp;quot;, 613, NULL, 11, NULL);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO product VALUES (20108, &amp;quot;Product H&amp;quot;, &amp;quot;BALL&amp;quot;, 615, NULL, 28, NULL);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO product VALUES (20201, &amp;quot;Product I&amp;quot;, &amp;quot;NET&amp;quot;, 708, NULL, 123, NULL);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO product VALUES (20510, &amp;quot;Product J&amp;quot;, &amp;quot;PADS, PAIR&amp;quot;, 1017, NULL, 9, NULL);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO product VALUES (20512, &amp;quot;Product K&amp;quot;, &amp;quot;PADS, PAIR&amp;quot;, 1019, NULL, 8, NULL);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE PACKAGE procesproducts IS&lt;br /&gt;
  2     TYPE type_prod_table IS TABLE OF product%ROWTYPE&lt;br /&gt;
  3        INDEX BY BINARY_INTEGER;&lt;br /&gt;
  4     pvg_prod_table type_prod_table;&lt;br /&gt;
  5     PROCEDURE populate_prod_table;&lt;br /&gt;
  6     PROCEDURE check_product_id (p_prod_id_num product.product_id%TYPE);&lt;br /&gt;
  7     PROCEDURE check_product_name (p_prod_name_txt product.&lt;br /&gt;
  8        product_name%TYPE);&lt;br /&gt;
  9  END procesproducts;&lt;br /&gt;
 10  /&lt;br /&gt;
Package created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE PACKAGE BODY procesproducts IS&lt;br /&gt;
  2  PROCEDURE populate_prod_table IS&lt;br /&gt;
  3     CURSOR cur_product IS&lt;br /&gt;
  4        SELECT *&lt;br /&gt;
  5        FROM   product;&lt;br /&gt;
  6  BEGIN&lt;br /&gt;
  7     pvg_prod_table.DELETE;&lt;br /&gt;
  8     FOR lv_prod_rec IN cur_product LOOP&lt;br /&gt;
  9        pvg_prod_table(lv_prod_rec.product_id).product_id := lv_prod_rec.product_id;&lt;br /&gt;
 10        pvg_prod_table(lv_prod_rec.product_id).product_name := lv_prod_rec.product_name;&lt;br /&gt;
 11        pvg_prod_table(lv_prod_rec.product_id).short_desc := lv_prod_rec.short_desc;&lt;br /&gt;
 12        pvg_prod_table(lv_prod_rec.product_id).suggested_wholesale_price := lv_prod_rec.suggested_wholesale_price;&lt;br /&gt;
 13     END LOOP;&lt;br /&gt;
 14  EXCEPTION&lt;br /&gt;
 15     WHEN OTHERS THEN&lt;br /&gt;
 16        RAISE_APPLICATION_ERROR(-20100,&lt;br /&gt;
 17           &amp;quot;Error in procedure POPULATE_PROD_TABLE.&amp;quot;, FALSE);&lt;br /&gt;
 18  END populate_prod_table;&lt;br /&gt;
 19&lt;br /&gt;
 20  PROCEDURE check_product_id(p_prod_id_num product.product_id%TYPE) IS&lt;br /&gt;
 21  BEGIN&lt;br /&gt;
 22     IF pvg_prod_table.EXISTS(p_prod_id_num) THEN&lt;br /&gt;
 23        DBMS_OUTPUT.PUT_LINE(&amp;quot;Product ID: &amp;quot; ||&lt;br /&gt;
 24           pvg_prod_table(p_prod_id_num).product_id );&lt;br /&gt;
 25        DBMS_OUTPUT.PUT_LINE(&amp;quot;Product Name: &amp;quot; ||&lt;br /&gt;
 26           pvg_prod_table(p_prod_id_num).product_name );&lt;br /&gt;
 27        DBMS_OUTPUT.PUT_LINE(&amp;quot;Description: &amp;quot; ||&lt;br /&gt;
 28           pvg_prod_table(p_prod_id_num).short_desc );&lt;br /&gt;
 29        DBMS_OUTPUT.PUT_LINE(&amp;quot;Wholesale Price: &amp;quot; ||&lt;br /&gt;
 30           TO_CHAR(pvg_prod_table(p_prod_id_num).&lt;br /&gt;
 31           suggested_wholesale_price, &amp;quot;$9999.00&amp;quot;));&lt;br /&gt;
 32        DBMS_OUTPUT.PUT_LINE(CHR(10));&lt;br /&gt;
 33     ELSE&lt;br /&gt;
 34        DBMS_OUTPUT.PUT_LINE(TO_CHAR(p_prod_id_num) || &amp;quot; is invalid.&amp;quot;);&lt;br /&gt;
 35     END IF;&lt;br /&gt;
 36  EXCEPTION&lt;br /&gt;
 37     WHEN OTHERS THEN&lt;br /&gt;
 38        RAISE_APPLICATION_ERROR(-20102,&lt;br /&gt;
 39           &amp;quot;Error in procedure CHECK_PRODUCT_ID.&amp;quot;, FALSE);&lt;br /&gt;
 40  END check_product_id;&lt;br /&gt;
 41  PROCEDURE check_product_name&lt;br /&gt;
 42     (p_prod_name_txt product.product_name%TYPE) IS&lt;br /&gt;
 43     lv_index_num     NUMBER;&lt;br /&gt;
 44     lv_match_bln     BOOLEAN := FALSE;&lt;br /&gt;
 45  BEGIN&lt;br /&gt;
 46     IF pvg_prod_table.COUNT &amp;lt;&amp;gt; 0 THEN&lt;br /&gt;
 47        lv_index_num := pvg_prod_table.FIRST;&lt;br /&gt;
 48        LOOP&lt;br /&gt;
 49           IF (INSTR(UPPER(pvg_prod_table(lv_index_num).product_name),UPPER(p_prod_name_txt)) &amp;gt; 0) THEN&lt;br /&gt;
 50              lv_match_bln := TRUE;&lt;br /&gt;
 51              DBMS_OUTPUT.PUT_LINE(&amp;quot;Product ID: &amp;quot; ||&lt;br /&gt;
 52                 pvg_prod_table(lv_index_num).product_id );&lt;br /&gt;
 53              DBMS_OUTPUT.PUT_LINE(&amp;quot;Product Name: &amp;quot; ||&lt;br /&gt;
 54                 pvg_prod_table(lv_index_num).product_name );&lt;br /&gt;
 55              DBMS_OUTPUT.PUT_LINE(&amp;quot;Description: &amp;quot; ||&lt;br /&gt;
 56                 pvg_prod_table(lv_index_num).short_desc );&lt;br /&gt;
 57              DBMS_OUTPUT.PUT_LINE(&amp;quot;Wholesale Price: &amp;quot; ||&lt;br /&gt;
 58                 TO_CHAR(pvg_prod_table(lv_index_num).&lt;br /&gt;
 59                 suggested_wholesale_price, &amp;quot;$9999.00&amp;quot;));&lt;br /&gt;
 60              DBMS_OUTPUT.PUT_LINE(CHR(10));&lt;br /&gt;
 61           END IF;&lt;br /&gt;
 62           EXIT WHEN (lv_index_num = pvg_prod_table.LAST) OR&lt;br /&gt;
 63              lv_match_bln;&lt;br /&gt;
 64           lv_index_num := pvg_prod_table.NEXT(lv_index_num);&lt;br /&gt;
 65        END LOOP;&lt;br /&gt;
 66        IF NOT lv_match_bln THEN&lt;br /&gt;
 67           DBMS_OUTPUT.PUT_LINE(&amp;quot;Product: &amp;quot; || p_prod_name_txt ||&lt;br /&gt;
 68              &amp;quot; is invalid.&amp;quot;);&lt;br /&gt;
 69        END IF;&lt;br /&gt;
 70     ELSE&lt;br /&gt;
 71        DBMS_OUTPUT.PUT_LINE(&amp;quot;There are no products in the table.&amp;quot;);&lt;br /&gt;
 72     END IF;&lt;br /&gt;
 73  EXCEPTION&lt;br /&gt;
 74     WHEN OTHERS THEN&lt;br /&gt;
 75        RAISE_APPLICATION_ERROR(-20102,&lt;br /&gt;
 76           &amp;quot;Error in procedure CHECK_PRODUCT_NAME.&amp;quot;, FALSE);&lt;br /&gt;
 77  END check_product_name;&lt;br /&gt;
 78&lt;br /&gt;
 79  end procesproducts;&lt;br /&gt;
 80  /&lt;br /&gt;
Package body created.&lt;br /&gt;
SQL&amp;gt; show error&lt;br /&gt;
No errors.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table product;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt; drop package procesproducts;&lt;br /&gt;
Package dropped.&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Timer package==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE PACKAGE timer&lt;br /&gt;
  2  IS&lt;br /&gt;
  3     PROCEDURE capture;&lt;br /&gt;
  4     PROCEDURE show_elapsed;&lt;br /&gt;
  5  END timer;&lt;br /&gt;
  6  /&lt;br /&gt;
Package created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE PACKAGE BODY timer&lt;br /&gt;
  2  IS&lt;br /&gt;
  3     last_timing INTEGER := NULL;&lt;br /&gt;
  4&lt;br /&gt;
  5     PROCEDURE capture IS&lt;br /&gt;
  6     BEGIN&lt;br /&gt;
  7       last_timing := DBMS_UTILITY.GET_TIME;&lt;br /&gt;
  8     END;&lt;br /&gt;
  9&lt;br /&gt;
 10     PROCEDURE show_elapsed IS&lt;br /&gt;
 11     BEGIN&lt;br /&gt;
 12        DBMS_OUTPUT.PUT_LINE (&amp;quot;Elapsed time: &amp;quot;||(DBMS_UTILITY.GET_TIME - last_timing)/100);&lt;br /&gt;
 13     END;&lt;br /&gt;
 14  END timer;&lt;br /&gt;
 15  /&lt;br /&gt;
Package body created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; DECLARE&lt;br /&gt;
  2     myname VARCHAR2(100);&lt;br /&gt;
  3  BEGIN&lt;br /&gt;
  4     timer.capture;&lt;br /&gt;
  5     FOR i IN 1 .. 1000&lt;br /&gt;
  6     loop&lt;br /&gt;
  7        myname := USER;&lt;br /&gt;
  8     end loop;&lt;br /&gt;
  9     timer.show_elapsed;&lt;br /&gt;
 10     end;&lt;br /&gt;
 11  /&lt;br /&gt;
Elapsed time: .09&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Validate all objects in a schema==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE PROCEDURE validate_structure (i_schema IN VARCHAR2) IS&lt;br /&gt;
  2     v_sql VARCHAR2 (2000);&lt;br /&gt;
  3     CURSOR cur_objects (p_schema VARCHAR2) IS&lt;br /&gt;
  4        SELECT object_name, object_type FROM sys.dba_objects&lt;br /&gt;
  5         WHERE owner = p_schema AND object_type IN (&amp;quot;CLUSTER&amp;quot;, &amp;quot;TABLE&amp;quot;)&lt;br /&gt;
  6         ORDER BY object_name;&lt;br /&gt;
  7  BEGIN&lt;br /&gt;
  8     FOR co IN cur_objects (i_schema)&lt;br /&gt;
  9     LOOP&lt;br /&gt;
 10        v_sql := &amp;quot;ANALYZE &amp;quot; ||&lt;br /&gt;
 11                 co.object_type ||&lt;br /&gt;
 12                 &amp;quot; &amp;quot; ||&lt;br /&gt;
 13                 i_schema ||&lt;br /&gt;
 14                 &amp;quot;.&amp;quot; ||&lt;br /&gt;
 15                 co.object_name ||&lt;br /&gt;
 16                 &amp;quot; VALIDATE STRUCTURE CASCADE&amp;quot;;&lt;br /&gt;
 17        DBMS_UTILITY.exec_ddl_statement (v_sql);&lt;br /&gt;
 18        DBMS_OUTPUT.put_line (v_sql);&lt;br /&gt;
 19     END LOOP;&lt;br /&gt;
 20  END;&lt;br /&gt;
 21&lt;br /&gt;
 22&lt;br /&gt;
 23  --&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>