<?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%2FStored_Procedure_Function%2FUtility_Procedure</id>
		<title>Oracle PL/SQL/Stored Procedure Function/Utility Procedure - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://sqle.ru/index.php?action=history&amp;feed=atom&amp;title=Oracle_PL%2FSQL%2FStored_Procedure_Function%2FUtility_Procedure"/>
		<link rel="alternate" type="text/html" href="http://sqle.ru/index.php?title=Oracle_PL/SQL/Stored_Procedure_Function/Utility_Procedure&amp;action=history"/>
		<updated>2026-05-25T18:22:27Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://sqle.ru/index.php?title=Oracle_PL/SQL/Stored_Procedure_Function/Utility_Procedure&amp;diff=2114&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/Stored_Procedure_Function/Utility_Procedure&amp;diff=2114&amp;oldid=prev"/>
				<updated>2010-05-26T13:45:19Z</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/Stored_Procedure_Function/Utility_Procedure&amp;diff=2115&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://sqle.ru/index.php?title=Oracle_PL/SQL/Stored_Procedure_Function/Utility_Procedure&amp;diff=2115&amp;oldid=prev"/>
				<updated>2010-05-26T10:00:59Z</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;==Assert procedure==&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;
 &lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; SET ECHO ON&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE PROCEDURE ASSERT (&lt;br /&gt;
  2      condition IN BOOLEAN,&lt;br /&gt;
  3      message IN VARCHAR2) AS&lt;br /&gt;
  4  BEGIN&lt;br /&gt;
  5      IF NOT condition THEN&lt;br /&gt;
  6          RAISE_APPLICATION_ERROR (-20000,message);&lt;br /&gt;
  7      END IF;&lt;br /&gt;
  8  END;&lt;br /&gt;
  9  /&lt;br /&gt;
Procedure created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; --&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Copy tables==&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;
 &lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE source (&lt;br /&gt;
  2    key NUMBER(5),&lt;br /&gt;
  3    value VARCHAR2(50)  );&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE destination (&lt;br /&gt;
  2    key NUMBER(5),&lt;br /&gt;
  3    value VARCHAR2(50)  );&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;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE PROCEDURE CopyTables AS&lt;br /&gt;
  2    v_Key   source.key%TYPE;&lt;br /&gt;
  3    v_Value source.value%TYPE;&lt;br /&gt;
  4&lt;br /&gt;
  5    CURSOR c_AllData IS&lt;br /&gt;
  6      SELECT *&lt;br /&gt;
  7        FROM source;&lt;br /&gt;
  8  BEGIN&lt;br /&gt;
  9    OPEN c_AllData;&lt;br /&gt;
 10&lt;br /&gt;
 11    LOOP&lt;br /&gt;
 12      FETCH c_AllData INTO v_Key, v_Value;&lt;br /&gt;
 13      EXIT WHEN c_AllData%NOTFOUND;&lt;br /&gt;
 14&lt;br /&gt;
 15      INSERT INTO destination (key, value)&lt;br /&gt;
 16        VALUES (v_Key, TO_NUMBER(v_Value));&lt;br /&gt;
 17    END LOOP;&lt;br /&gt;
 18&lt;br /&gt;
 19    CLOSE c_AllData;&lt;br /&gt;
 20  END CopyTables;&lt;br /&gt;
 21  /&lt;br /&gt;
Procedure created.&lt;br /&gt;
SQL&amp;gt;&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; drop table source;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table destination;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Count credits==&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;
 &lt;br /&gt;
SQL&amp;gt; CREATE TABLE lecturer (&lt;br /&gt;
  2    id               NUMBER(5) PRIMARY KEY,&lt;br /&gt;
  3    first_name       VARCHAR2(20),&lt;br /&gt;
  4    last_name        VARCHAR2(20),&lt;br /&gt;
  5    major            VARCHAR2(30),&lt;br /&gt;
  6    current_credits  NUMBER(3)&lt;br /&gt;
  7    );&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO lecturer (id, first_name, last_name, major,current_credits)&lt;br /&gt;
  2                VALUES (10001, &amp;quot;Scott&amp;quot;, &amp;quot;Lawson&amp;quot;,&amp;quot;Computer Science&amp;quot;, 11);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO lecturer (id, first_name, last_name, major, current_credits)&lt;br /&gt;
  2                VALUES (10002, &amp;quot;Mar&amp;quot;, &amp;quot;Wells&amp;quot;,&amp;quot;History&amp;quot;, 4);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO lecturer (id, first_name, last_name, major,current_credits)&lt;br /&gt;
  2                VALUES (10003, &amp;quot;Jone&amp;quot;, &amp;quot;Bliss&amp;quot;,&amp;quot;Computer Science&amp;quot;, 8);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO lecturer (id, first_name, last_name, major,current_credits)&lt;br /&gt;
  2                VALUES (10004, &amp;quot;Man&amp;quot;, &amp;quot;Kyte&amp;quot;,&amp;quot;Economics&amp;quot;, 8);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO lecturer (id, first_name, last_name, major,current_credits)&lt;br /&gt;
  2                VALUES (10005, &amp;quot;Pat&amp;quot;, &amp;quot;Poll&amp;quot;,&amp;quot;History&amp;quot;, 4);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO lecturer (id, first_name, last_name, major,current_credits)&lt;br /&gt;
  2                VALUES (10006, &amp;quot;Tim&amp;quot;, &amp;quot;Viper&amp;quot;,&amp;quot;History&amp;quot;, 4);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO lecturer (id, first_name, last_name, major,current_credits)&lt;br /&gt;
  2                VALUES (10007, &amp;quot;Barbara&amp;quot;, &amp;quot;Blues&amp;quot;,&amp;quot;Economics&amp;quot;, 7);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO lecturer (id, first_name, last_name, major,current_credits)&lt;br /&gt;
  2                VALUES (10008, &amp;quot;David&amp;quot;, &amp;quot;Large&amp;quot;,&amp;quot;Music&amp;quot;, 4);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO lecturer (id, first_name, last_name, major,current_credits)&lt;br /&gt;
  2                VALUES (10009, &amp;quot;Chris&amp;quot;, &amp;quot;Elegant&amp;quot;,&amp;quot;Nutrition&amp;quot;, 8);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO lecturer (id, first_name, last_name, major,current_credits)&lt;br /&gt;
  2                VALUES (10010, &amp;quot;Rose&amp;quot;, &amp;quot;Bond&amp;quot;,&amp;quot;Music&amp;quot;, 7);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO lecturer (id, first_name, last_name, major,current_credits)&lt;br /&gt;
  2                VALUES (10011, &amp;quot;Rita&amp;quot;, &amp;quot;Johnson&amp;quot;,&amp;quot;Nutrition&amp;quot;, 8);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO lecturer (id, first_name, last_name, major,current_credits)&lt;br /&gt;
  2                VALUES (10012, &amp;quot;Sharon&amp;quot;, &amp;quot;Clear&amp;quot;,&amp;quot;Computer Science&amp;quot;, 3);&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 session (&lt;br /&gt;
  2    department       CHAR(3),&lt;br /&gt;
  3    course           NUMBER(3),&lt;br /&gt;
  4    description      VARCHAR2(2000),&lt;br /&gt;
  5    max_lecturer     NUMBER(3),&lt;br /&gt;
  6    current_lecturer NUMBER(3),&lt;br /&gt;
  7    num_credits      NUMBER(1),&lt;br /&gt;
  8    room_id          NUMBER(5));&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO session(department, course, description, max_lecturer, current_lecturer, num_credits, room_id)&lt;br /&gt;
  2              VALUES (&amp;quot;HIS&amp;quot;, 101, &amp;quot;History 101&amp;quot;, 30, 11, 4, 20000);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO session(department, course, description, max_lecturer, current_lecturer, num_credits, room_id)&lt;br /&gt;
  2              VALUES (&amp;quot;HIS&amp;quot;, 301, &amp;quot;History 301&amp;quot;, 30, 0, 4, 20004);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO session(department, course, description, max_lecturer, current_lecturer, num_credits, room_id)&lt;br /&gt;
  2              VALUES (&amp;quot;CS&amp;quot;, 101, &amp;quot;Computer Science 101&amp;quot;, 50, 0, 4, 20001);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO session(department, course, description, max_lecturer, current_lecturer, num_credits, room_id)&lt;br /&gt;
  2              VALUES (&amp;quot;ECN&amp;quot;, 203, &amp;quot;Economics 203&amp;quot;, 15, 0, 3, 20002);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO session(department, course, description, max_lecturer, current_lecturer, num_credits, room_id)&lt;br /&gt;
  2              VALUES (&amp;quot;CS&amp;quot;, 102, &amp;quot;Computer Science 102&amp;quot;, 35, 3, 4, 20003);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO session(department, course, description, max_lecturer, current_lecturer, num_credits, room_id)&lt;br /&gt;
  2              VALUES (&amp;quot;MUS&amp;quot;, 410, &amp;quot;Music 410&amp;quot;, 5, 4, 3, 20005);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO session(department, course, description, max_lecturer, current_lecturer, num_credits, room_id)&lt;br /&gt;
  2              VALUES (&amp;quot;ECN&amp;quot;, 101, &amp;quot;Economics 101&amp;quot;, 50, 0, 4, 20007);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO session(department, course, description, max_lecturer, current_lecturer, num_credits, room_id)&lt;br /&gt;
  2              VALUES (&amp;quot;NUT&amp;quot;, 307, &amp;quot;Nutrition 307&amp;quot;, 20, 2, 4, 20008);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO session(department, course, description, max_lecturer, current_lecturer, num_credits, room_id)&lt;br /&gt;
  2              VALUES (&amp;quot;MUS&amp;quot;, 100, &amp;quot;Music 100&amp;quot;, 100, 0, 3, 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; CREATE TABLE myStudent (&lt;br /&gt;
  2    student_id NUMBER(5) NOT NULL,&lt;br /&gt;
  3    department CHAR(3)   NOT NULL,&lt;br /&gt;
  4    course     NUMBER(3) NOT NULL,&lt;br /&gt;
  5    grade      CHAR(1)&lt;br /&gt;
  6    );&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO myStudent (student_id, department, course, grade)&lt;br /&gt;
  2                           VALUES (10000, &amp;quot;CS&amp;quot;, 102, &amp;quot;A&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO myStudent (student_id, department, course, grade)&lt;br /&gt;
  2                           VALUES (10002, &amp;quot;CS&amp;quot;, 102, &amp;quot;B&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO myStudent (student_id, department, course, grade)&lt;br /&gt;
  2                           VALUES (10003, &amp;quot;CS&amp;quot;, 102, &amp;quot;C&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO myStudent (student_id, department, course, grade)&lt;br /&gt;
  2                           VALUES (10000, &amp;quot;HIS&amp;quot;, 101, &amp;quot;A&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO myStudent (student_id, department, course, grade)&lt;br /&gt;
  2                           VALUES (10001, &amp;quot;HIS&amp;quot;, 101, &amp;quot;B&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO myStudent (student_id, department, course, grade)&lt;br /&gt;
  2                           VALUES (10002, &amp;quot;HIS&amp;quot;, 101, &amp;quot;B&amp;quot;);&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 OR REPLACE FUNCTION CountCredits (&lt;br /&gt;
  2    p_ID IN lecturer.ID%TYPE)&lt;br /&gt;
  3    RETURN NUMBER AS&lt;br /&gt;
  4&lt;br /&gt;
  5    v_TotalCredits NUMBER;  -- Total number of credits&lt;br /&gt;
  6    v_CourseCredits NUMBER; -- Credits for one course&lt;br /&gt;
  7    CURSOR c_RegisteredCourses IS&lt;br /&gt;
  8      SELECT department, course&lt;br /&gt;
  9        FROM myStudent&lt;br /&gt;
 10        WHERE student_id = p_ID;&lt;br /&gt;
 11  BEGIN&lt;br /&gt;
 12    FOR v_CourseRec IN c_RegisteredCourses LOOP&lt;br /&gt;
 13      SELECT num_credits&lt;br /&gt;
 14        INTO v_CourseCredits&lt;br /&gt;
 15        FROM session&lt;br /&gt;
 16        WHERE department = v_CourseRec.department&lt;br /&gt;
 17        AND course = v_CourseRec.course;&lt;br /&gt;
 18&lt;br /&gt;
 19      v_TotalCredits := v_TotalCredits + v_CourseCredits;&lt;br /&gt;
 20    END LOOP;&lt;br /&gt;
 21&lt;br /&gt;
 22    RETURN v_TotalCredits;&lt;br /&gt;
 23  END CountCredits;&lt;br /&gt;
 24  /&lt;br /&gt;
Function created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table lecturer;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt; drop table session;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table myStudent;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Create a stored procedure to measure a table usage==&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;
 &lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; set echo on&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create table t ( x int, y char(1000) default &amp;quot;x&amp;quot; );&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create or replace procedure measure_usage&lt;br /&gt;
  2  as&lt;br /&gt;
  3      l_free_blks                 number;&lt;br /&gt;
  4      l_total_blocks              number;&lt;br /&gt;
  5      l_total_bytes               number;&lt;br /&gt;
  6      l_unused_blocks             number;&lt;br /&gt;
  7      l_unused_bytes              number;&lt;br /&gt;
  8      l_LastUsedExtFileId         number;&lt;br /&gt;
  9      l_LastUsedExtBlockId        number;&lt;br /&gt;
 10      l_LAST_USED_BLOCK           number;&lt;br /&gt;
 11      procedure get_data is&lt;br /&gt;
 12      begin&lt;br /&gt;
 13          dbms_space.free_blocks&lt;br /&gt;
 14          ( segment_owner     =&amp;gt;  USER,&lt;br /&gt;
 15            segment_name      =&amp;gt; &amp;quot;T&amp;quot;,&lt;br /&gt;
 16            segment_type      =&amp;gt; &amp;quot;TABLE&amp;quot;,&lt;br /&gt;
 17            FREELIST_group_id =&amp;gt; 0,&lt;br /&gt;
 18            free_blks         =&amp;gt; l_free_blks );&lt;br /&gt;
 19&lt;br /&gt;
 20          dbms_space.unused_space&lt;br /&gt;
 21          ( segment_owner     =&amp;gt; USER,&lt;br /&gt;
 22            segment_name      =&amp;gt; &amp;quot;T&amp;quot;,&lt;br /&gt;
 23            segment_type      =&amp;gt; &amp;quot;TABLE&amp;quot;,&lt;br /&gt;
 24            total_blocks      =&amp;gt; l_total_blocks,&lt;br /&gt;
 25            total_bytes       =&amp;gt; l_total_bytes,&lt;br /&gt;
 26            unused_blocks     =&amp;gt; l_unused_blocks,&lt;br /&gt;
 27            unused_bytes      =&amp;gt; l_unused_bytes,&lt;br /&gt;
 28            LAST_USED_EXTENT_FILE_ID =&amp;gt; l_LastUsedExtFileId,&lt;br /&gt;
 29            LAST_USED_EXTENT_BLOCK_ID =&amp;gt; l_LastUsedExtBlockId,&lt;br /&gt;
 30            LAST_USED_BLOCK =&amp;gt; l_last_used_block ) ;&lt;br /&gt;
 31&lt;br /&gt;
 32&lt;br /&gt;
 33          dbms_output.put_line( L_free_blks || &amp;quot; on FREELIST, &amp;quot; ||&lt;br /&gt;
 34                                to_number(l_total_blocks-l_unused_blocks-1 ) ||&lt;br /&gt;
 35                                &amp;quot; used by table&amp;quot; );&lt;br /&gt;
 36      end;&lt;br /&gt;
 37  begin&lt;br /&gt;
 38      for i in 0 .. 10&lt;br /&gt;
 39      loop&lt;br /&gt;
 40          dbms_output.put( &amp;quot;insert &amp;quot; || to_char(i,&amp;quot;00&amp;quot;) || &amp;quot; &amp;quot; );&lt;br /&gt;
 41          get_data;&lt;br /&gt;
 42          insert into t (x) values ( i );&lt;br /&gt;
 43          commit ;&lt;br /&gt;
 44      end loop;&lt;br /&gt;
 45&lt;br /&gt;
 46&lt;br /&gt;
 47      for i in 0 .. 10&lt;br /&gt;
 48      loop&lt;br /&gt;
 49          dbms_output.put( &amp;quot;update &amp;quot; || to_char(i,&amp;quot;00&amp;quot;) || &amp;quot; &amp;quot; );&lt;br /&gt;
 50          get_data;&lt;br /&gt;
 51          update t set y = null where x = i;&lt;br /&gt;
 52          commit;&lt;br /&gt;
 53      end loop;&lt;br /&gt;
 54  end;&lt;br /&gt;
 55  /&lt;br /&gt;
Procedure created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; exec measure_usage&lt;br /&gt;
insert  00 0 on FREELIST, 0 used by table&lt;br /&gt;
insert  01 1 on FREELIST, 1 used by table&lt;br /&gt;
insert  02 1 on FREELIST, 1 used by table&lt;br /&gt;
insert  03 1 on FREELIST, 1 used by table&lt;br /&gt;
insert  04 1 on FREELIST, 1 used by table&lt;br /&gt;
insert  05 1 on FREELIST, 1 used by table&lt;br /&gt;
insert  06 1 on FREELIST, 1 used by table&lt;br /&gt;
insert  07 1 on FREELIST, 1 used by table&lt;br /&gt;
insert  08 1 on FREELIST, 2 used by table&lt;br /&gt;
insert  09 1 on FREELIST, 2 used by table&lt;br /&gt;
insert  10 1 on FREELIST, 2 used by table&lt;br /&gt;
update  00 1 on FREELIST, 2 used by table&lt;br /&gt;
update  01 1 on FREELIST, 2 used by table&lt;br /&gt;
update  02 1 on FREELIST, 2 used by table&lt;br /&gt;
update  03 1 on FREELIST, 2 used by table&lt;br /&gt;
update  04 2 on FREELIST, 2 used by table&lt;br /&gt;
update  05 2 on FREELIST, 2 used by table&lt;br /&gt;
update  06 2 on FREELIST, 2 used by table&lt;br /&gt;
update  07 2 on FREELIST, 2 used by table&lt;br /&gt;
update  08 2 on FREELIST, 2 used by table&lt;br /&gt;
update  09 2 on FREELIST, 2 used by table&lt;br /&gt;
update  10 2 on FREELIST, 2 used by table&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; drop table t;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; --&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==emp table lookup==&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;
 &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; select * from emp;&lt;br /&gt;
     EMPNO Employee Name JOB              MGR HIREDATE      Salary       COMM     DEPTNO&lt;br /&gt;
---------- ------------- --------- ---------- --------- ---------- ---------- ----------&lt;br /&gt;
      7369 SMITH         CLERK           7902 17-DEC-80        800                    20&lt;br /&gt;
      7499 ALLEN         SALESMAN        7698 20-FEB-81       1600        300         30&lt;br /&gt;
      7521 WARD          SALESMAN        7698 22-FEB-81       1250        500         30&lt;br /&gt;
      7566 JONES         MANAGER         7839 02-APR-81       2975                    20&lt;br /&gt;
      7654 MARTIN        SALESMAN        7698 28-SEP-81       1250       1400         30&lt;br /&gt;
      7698 BLAKE         MANAGER         7839 01-MAY-81       2850                    30&lt;br /&gt;
      7782 CLARK         MANAGER         7839 09-JUN-81       2450                    10&lt;br /&gt;
      7788 SCOTT         ANALYST         7566 09-DEC-82       3000                    20&lt;br /&gt;
      7839 KING          PRESIDENT            17-NOV-81       5000                    10&lt;br /&gt;
      7844 TURNER        SALESMAN        7698 08-SEP-81       1500          0         30&lt;br /&gt;
      7876 ADAMS         CLERK           7788 12-JAN-83       1100                    20&lt;br /&gt;
     EMPNO Employee Name JOB              MGR HIREDATE      Salary       COMM     DEPTNO&lt;br /&gt;
---------- ------------- --------- ---------- --------- ---------- ---------- ----------&lt;br /&gt;
      7900 JAMES         CLERK           7698 03-DEC-81        950                    30&lt;br /&gt;
      7902 FORD          ANALYST         7566 03-DEC-81       3000                    20&lt;br /&gt;
      7934 MILLER        CLERK           7782 23-JAN-82       1300                    10&lt;br /&gt;
14 rows selected.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create or replace procedure emp_lookup(&lt;br /&gt;
  2    p_empno in     number,&lt;br /&gt;
  3    o_ename    out emp.ename%type,&lt;br /&gt;
  4    o_sal      out emp.sal%type ) as&lt;br /&gt;
  5  begin&lt;br /&gt;
  6    select ename, sal&lt;br /&gt;
  7      into o_ename, o_sal&lt;br /&gt;
  8      from emp&lt;br /&gt;
  9        where empno = p_empno;&lt;br /&gt;
 10  exception&lt;br /&gt;
 11    when NO_DATA_FOUND then&lt;br /&gt;
 12      o_ename := &amp;quot;NULL&amp;quot;;&lt;br /&gt;
 13      o_sal := -1;&lt;br /&gt;
 14    end emp_lookup;&lt;br /&gt;
 15  /&lt;br /&gt;
Procedure created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;  variable name varchar2(10);&lt;br /&gt;
SQL&amp;gt;  variable sal number;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;  exec emp_lookup( &amp;quot;7782&amp;quot;, :name, :sal );&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;  print name&lt;br /&gt;
NAME&lt;br /&gt;
--------------------------------&lt;br /&gt;
CLARK&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;  print sal&lt;br /&gt;
    Salary&lt;br /&gt;
----------&lt;br /&gt;
      2450&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;  select :name, :sal from dual;&lt;br /&gt;
:NAME                                  :SAL&lt;br /&gt;
-------------------------------- ----------&lt;br /&gt;
CLARK                                  2450&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table emp;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==File dump procedure==&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;
 &lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create or replace procedure file_dump( p_directory in varchar2,p_filename  in varchar2 )&lt;br /&gt;
  2  as&lt;br /&gt;
  3      type array is table of varchar2(5) index by binary_integer;&lt;br /&gt;
  4&lt;br /&gt;
  5      l_chars  array;&lt;br /&gt;
  6      l_bfile  bfile;&lt;br /&gt;
  7      l_buffsize number default 15;&lt;br /&gt;
  8      l_data   varchar2(30);&lt;br /&gt;
  9      l_len    number;&lt;br /&gt;
 10      l_offset number default 1;&lt;br /&gt;
 11      l_char   char(1);&lt;br /&gt;
 12  begin&lt;br /&gt;
 13      l_chars(0)  := &amp;quot;\0&amp;quot;;&lt;br /&gt;
 14      l_chars(13) := &amp;quot;\r&amp;quot;;&lt;br /&gt;
 15      l_chars(10) := &amp;quot;\n&amp;quot;;&lt;br /&gt;
 16      l_chars(9)  := &amp;quot;\t&amp;quot;;&lt;br /&gt;
 17&lt;br /&gt;
 18      l_bfile := bfilename( p_directory, p_filename );&lt;br /&gt;
 19      dbms_lob.fileopen( l_bfile );&lt;br /&gt;
 20&lt;br /&gt;
 21      l_len := dbms_lob.getlength( l_bfile );&lt;br /&gt;
 22      while( l_offset &amp;lt; l_len )&lt;br /&gt;
 23      loop&lt;br /&gt;
 24          l_data := utl_raw.cast_to_varchar2(dbms_lob.substr( l_bfile, l_buffsize, l_offset ));&lt;br /&gt;
 25&lt;br /&gt;
 26          for i in 1 .. length(l_data)&lt;br /&gt;
 27          loop&lt;br /&gt;
 28              l_char := substr(l_data,i,1);&lt;br /&gt;
 29&lt;br /&gt;
 30              if ascii( l_char ) between 32 and 126&lt;br /&gt;
 31              then&lt;br /&gt;
 32                  dbms_output.put( lpad(l_char,3) );&lt;br /&gt;
 33              elsif ( l_chars.exists( ascii(l_char) ) )&lt;br /&gt;
 34              then&lt;br /&gt;
 35                  dbms_output.put( lpad( l_chars(ascii(l_char)), 3 ) );&lt;br /&gt;
 36              else&lt;br /&gt;
 37                  dbms_output.put( to_char(ascii(l_char),&amp;quot;0X&amp;quot;) );&lt;br /&gt;
 38              end if;&lt;br /&gt;
 39          end loop;&lt;br /&gt;
 40          dbms_output.new_line;&lt;br /&gt;
 41&lt;br /&gt;
 42          l_offset := l_offset + l_buffsize;&lt;br /&gt;
 43      end loop;&lt;br /&gt;
 44      dbms_lob.close( l_bfile );&lt;br /&gt;
 45  end;&lt;br /&gt;
 46  /&lt;br /&gt;
Procedure created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; exec file_dump( &amp;quot;MY_FILES&amp;quot;, &amp;quot;demo17.dat&amp;quot; );&lt;br /&gt;
BEGIN file_dump( &amp;quot;MY_FILES&amp;quot;, &amp;quot;demo17.dat&amp;quot; ); END;&lt;br /&gt;
*&lt;br /&gt;
ERROR at line 1:&lt;br /&gt;
ORA-22285: non-existent directory or file for&lt;br /&gt;
FILEOPEN operation&lt;br /&gt;
ORA-06512: at &amp;quot;SYS.DBMS_LOB&amp;quot;, line 523&lt;br /&gt;
ORA-06512: at &amp;quot;sqle.FILE_DUMP&amp;quot;, line 19&lt;br /&gt;
ORA-06512: at line 1&lt;br /&gt;
&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; --&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Procedure does not count space==&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;
 &lt;br /&gt;
SQL&amp;gt; --&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE function dontcountsp(p_pass_string VARCHAR2)&lt;br /&gt;
  2          RETURN NUMBER IS&lt;br /&gt;
  3               v_MYCOUNTER INTEGER := 1;&lt;br /&gt;
  4               v_COUNTNOSP NUMBER := 0;&lt;br /&gt;
  5     BEGIN&lt;br /&gt;
  6          WHILE v_MYCOUNTER &amp;lt;= LENGTH(p_PASS_STRING) LOOP&lt;br /&gt;
  7               IF SUBSTR(p_PASS_STRING,v_MYCOUNTER,1) != &amp;quot; &amp;quot; THEN&lt;br /&gt;
  8                    v_COUNTNOSP := v_COUNTNOSP + 1;&lt;br /&gt;
  9               ELSE&lt;br /&gt;
 10                   NULL;&lt;br /&gt;
 11              END IF;&lt;br /&gt;
 12              v_MYCOUNTER := v_MYCOUNTER + 1;&lt;br /&gt;
 13         END LOOP;&lt;br /&gt;
 14         RETURN v_COUNTNOSP ;&lt;br /&gt;
 15    END dontcountsp;&lt;br /&gt;
 16    /&lt;br /&gt;
Function created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;   DECLARE&lt;br /&gt;
  2         v_MYTEXT VARCHAR2(20) := &amp;quot;THIS IS A TEST&amp;quot;;&lt;br /&gt;
  3    BEGIN&lt;br /&gt;
  4         DBMS_OUTPUT.PUT_LINE(&amp;quot;Total count is &amp;quot; || dontcountsp(v_MYTEXT));&lt;br /&gt;
  5    END;&lt;br /&gt;
  6    /&lt;br /&gt;
Total count is 11&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; --&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Use stored procedure to log message==&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;
 &lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create table myLogTable(&lt;br /&gt;
  2    username varchar2(30),&lt;br /&gt;
  3    date_time timestamp,&lt;br /&gt;
  4    message varchar2(4000) );&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 procedure log_message( p_message varchar2 ) as&lt;br /&gt;
  2  pragma autonomous_transaction;&lt;br /&gt;
  3    begin&lt;br /&gt;
  4    insert into myLogTable( username, date_time, message )&lt;br /&gt;
  5    values ( user, current_date, p_message );&lt;br /&gt;
  6    commit;&lt;br /&gt;
  7  end log_message;&lt;br /&gt;
  8  /&lt;br /&gt;
Procedure created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; begin&lt;br /&gt;
  2  log_message(&amp;quot;hi&amp;quot;);&lt;br /&gt;
  3  end;&lt;br /&gt;
  4  /&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; select * from myLogTable;&lt;br /&gt;
USERNAME                       DATE_TIME&lt;br /&gt;
------------------------------ ---------------------------------------------------------------------------&lt;br /&gt;
MESSAGE&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
SYS                            11-JUN-08 08.44.26.000000 PM&lt;br /&gt;
hi&lt;br /&gt;
&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table myLogTable;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Use stored procedure to output table content==&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;
 &lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; set serveroutput on&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 or replace procedure show_emp( p_empno in number )&lt;br /&gt;
  2  is&lt;br /&gt;
  3  begin&lt;br /&gt;
  4    for c1 in (select * from emp where empno = p_empno) loop&lt;br /&gt;
  5&lt;br /&gt;
  6      dbms_output.put_line(&amp;quot;Name: &amp;quot; || c1.ename);&lt;br /&gt;
  7      dbms_output.put_line(&amp;quot;Job: &amp;quot; || c1.job);&lt;br /&gt;
  8      dbms_output.put_line(&amp;quot;Salary: &amp;quot; || c1.sal);&lt;br /&gt;
  9      dbms_output.put_line(&amp;quot;Commission: &amp;quot; || c1.rum);&lt;br /&gt;
 10    end loop;&lt;br /&gt;
 11  end show_emp;&lt;br /&gt;
 12  /&lt;br /&gt;
Procedure created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; show errors&lt;br /&gt;
No errors.&lt;br /&gt;
SQL&amp;gt; /&lt;br /&gt;
Procedure created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; EXEC show_emp(7934);&lt;br /&gt;
Name: MILLER&lt;br /&gt;
Job: CLERK&lt;br /&gt;
Salary: 1300&lt;br /&gt;
Commission:&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table emp;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>