<?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%2FParameters</id>
		<title>Oracle PL/SQL Tutorial/Function Procedure Packages/Parameters - История изменений</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%2FParameters"/>
		<link rel="alternate" type="text/html" href="http://sqle.ru/index.php?title=Oracle_PL/SQL_Tutorial/Function_Procedure_Packages/Parameters&amp;action=history"/>
		<updated>2026-05-25T23:21:54Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://sqle.ru/index.php?title=Oracle_PL/SQL_Tutorial/Function_Procedure_Packages/Parameters&amp;diff=4386&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/Parameters&amp;diff=4386&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/Parameters&amp;diff=4387&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/Parameters&amp;diff=4387&amp;oldid=prev"/>
				<updated>2010-05-26T10:11:42Z</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;== Define function with NUMBER type parameter==&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; set serveroutput on&lt;br /&gt;
SQL&amp;gt; set echo on&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE FUNCTION squareme(thenum number)&lt;br /&gt;
  2       RETURN NUMBER IS&lt;br /&gt;
  3  BEGIN&lt;br /&gt;
  4       RETURN thenum * thenum;&lt;br /&gt;
  5  END squareme;&lt;br /&gt;
  6  /&lt;br /&gt;
Function created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; BEGIN&lt;br /&gt;
  2       DBMS_OUTPUT.PUT_LINE(&amp;quot;9 squared is &amp;quot; || squareme(9) );&lt;br /&gt;
  3  END;&lt;br /&gt;
  4  /&lt;br /&gt;
9 squared is 81&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;
== Defining Formal Parameters==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;A parameter is a value that you can pass from a block of statements to a function.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The Syntax for Defining a Parameter&amp;lt;/p&amp;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;
parameter_name [MODE] parameter_type [:= value | DEFAULT value]&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Function without parameter==&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; set serveroutput on&lt;br /&gt;
SQL&amp;gt; set echo on&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE FUNCTION mypi&lt;br /&gt;
  2      RETURN NUMBER IS&lt;br /&gt;
  3  BEGIN&lt;br /&gt;
  4       NULL;&lt;br /&gt;
  5       RETURN 3.14;&lt;br /&gt;
  6  END mypi;&lt;br /&gt;
  7  /&lt;br /&gt;
Function created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; BEGIN&lt;br /&gt;
  2       DBMS_OUTPUT.PUT_LINE(&amp;quot;value of pi is &amp;quot; || mypi);&lt;br /&gt;
  3  END;&lt;br /&gt;
  4  /&lt;br /&gt;
value of pi is 3.14&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;
== Mixed Name and Position Notation Calls==&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; CREATE OR REPLACE FUNCTION add_three_numbers( a NUMBER := 0, b NUMBER := 0, c NUMBER := 0 ) RETURN NUMBER IS&lt;br /&gt;
  2  BEGIN&lt;br /&gt;
  3    RETURN a + b + c;&lt;br /&gt;
  4  END;&lt;br /&gt;
  5  /&lt;br /&gt;
Function created.&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Parameter Default Values==&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 demo table&lt;br /&gt;
SQL&amp;gt; create table Employee(&lt;br /&gt;
  2    ID                 VARCHAR2(4 BYTE)         NOT NULL,&lt;br /&gt;
  3    First_Name         VARCHAR2(10 BYTE),&lt;br /&gt;
  4    Last_Name          VARCHAR2(10 BYTE),&lt;br /&gt;
  5    Start_Date         DATE,&lt;br /&gt;
  6    End_Date           DATE,&lt;br /&gt;
  7    Salary             Number(8,2),&lt;br /&gt;
  8    City               VARCHAR2(10 BYTE),&lt;br /&gt;
  9    Description        VARCHAR2(15 BYTE)&lt;br /&gt;
 10  )&lt;br /&gt;
 11  /&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; -- prepare data&lt;br /&gt;
SQL&amp;gt; insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary,  City,       Description)&lt;br /&gt;
  2               values (&amp;quot;01&amp;quot;,&amp;quot;Jason&amp;quot;,    &amp;quot;Martin&amp;quot;,  to_date(&amp;quot;19960725&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), to_date(&amp;quot;20060725&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 1234.56, &amp;quot;Toronto&amp;quot;,  &amp;quot;Programmer&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary,  City,       Description)&lt;br /&gt;
  2                values(&amp;quot;02&amp;quot;,&amp;quot;Alison&amp;quot;,   &amp;quot;Mathews&amp;quot;, to_date(&amp;quot;19760321&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), to_date(&amp;quot;19860221&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 6661.78, &amp;quot;Vancouver&amp;quot;,&amp;quot;Tester&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary,  City,       Description)&lt;br /&gt;
  2                values(&amp;quot;03&amp;quot;,&amp;quot;James&amp;quot;,    &amp;quot;Smith&amp;quot;,   to_date(&amp;quot;19781212&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), to_date(&amp;quot;19900315&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 6544.78, &amp;quot;Vancouver&amp;quot;,&amp;quot;Tester&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary,  City,       Description)&lt;br /&gt;
  2                values(&amp;quot;04&amp;quot;,&amp;quot;Celia&amp;quot;,    &amp;quot;Rice&amp;quot;,    to_date(&amp;quot;19821024&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), to_date(&amp;quot;19990421&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 2344.78, &amp;quot;Vancouver&amp;quot;,&amp;quot;Manager&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary,  City,       Description)&lt;br /&gt;
  2                values(&amp;quot;05&amp;quot;,&amp;quot;Robert&amp;quot;,   &amp;quot;Black&amp;quot;,   to_date(&amp;quot;19840115&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), to_date(&amp;quot;19980808&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 2334.78, &amp;quot;Vancouver&amp;quot;,&amp;quot;Tester&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary, City,        Description)&lt;br /&gt;
  2                values(&amp;quot;06&amp;quot;,&amp;quot;Linda&amp;quot;,    &amp;quot;Green&amp;quot;,   to_date(&amp;quot;19870730&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), to_date(&amp;quot;19960104&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 4322.78,&amp;quot;New York&amp;quot;,  &amp;quot;Tester&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary, City,        Description)&lt;br /&gt;
  2                values(&amp;quot;07&amp;quot;,&amp;quot;David&amp;quot;,    &amp;quot;Larry&amp;quot;,   to_date(&amp;quot;19901231&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), to_date(&amp;quot;19980212&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 7897.78,&amp;quot;New York&amp;quot;,  &amp;quot;Manager&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary, City,        Description)&lt;br /&gt;
  2                values(&amp;quot;08&amp;quot;,&amp;quot;James&amp;quot;,    &amp;quot;Cat&amp;quot;,     to_date(&amp;quot;19960917&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), to_date(&amp;quot;20020415&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 1232.78,&amp;quot;Vancouver&amp;quot;, &amp;quot;Tester&amp;quot;)&lt;br /&gt;
  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;&lt;br /&gt;
SQL&amp;gt; -- display data in the table&lt;br /&gt;
SQL&amp;gt; select * from Employee&lt;br /&gt;
  2  /&lt;br /&gt;
ID   FIRST_NAME           LAST_NAME            START_DAT END_DATE      SALARY CITY       DESCRIPTION&lt;br /&gt;
---- -------------------- -------------------- --------- --------- ---------- ---------- ---------------&lt;br /&gt;
01   Jason                Martin               25-JUL-96 25-JUL-06    1234.56 Toronto    Programmer&lt;br /&gt;
02   Alison               Mathews              21-MAR-76 21-FEB-86    6661.78 Vancouver  Tester&lt;br /&gt;
03   James                Smith                12-DEC-78 15-MAR-90    6544.78 Vancouver  Tester&lt;br /&gt;
04   Celia                Rice                 24-OCT-82 21-APR-99    2344.78 Vancouver  Manager&lt;br /&gt;
05   Robert               Black                15-JAN-84 08-AUG-98    2334.78 Vancouver  Tester&lt;br /&gt;
06   Linda                Green                30-JUL-87 04-JAN-96    4322.78 New York   Tester&lt;br /&gt;
07   David                Larry                31-DEC-90 12-FEB-98    7897.78 New York   Manager&lt;br /&gt;
08   James                Cat                  17-SEP-96 15-APR-02    1232.78 Vancouver  Tester&lt;br /&gt;
8 rows selected.&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 AddNewEmployee (&lt;br /&gt;
  2    p_FirstName  employee.first_name%TYPE,&lt;br /&gt;
  3    p_LastName   employee.last_name%TYPE,&lt;br /&gt;
  4    p_City      employee.city%TYPE DEFAULT &amp;quot;AAA&amp;quot;) AS&lt;br /&gt;
  5  BEGIN&lt;br /&gt;
  6    INSERT INTO employee (id, first_name, last_name,city)VALUES (&amp;quot;99&amp;quot;,&lt;br /&gt;
  7      p_FirstName, p_LastName, p_city);&lt;br /&gt;
  8&lt;br /&gt;
  9    COMMIT;&lt;br /&gt;
 10  END AddNewEmployee;&lt;br /&gt;
 11  /&lt;br /&gt;
Procedure created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; DECLARE&lt;br /&gt;
  2    v_NewFirstName  employee.first_name%TYPE := &amp;quot;Margaret&amp;quot;;&lt;br /&gt;
  3    v_NewLastName   employee.last_name%TYPE := &amp;quot;Mason&amp;quot;;&lt;br /&gt;
  4  BEGIN&lt;br /&gt;
  5    -- Add Margaret Mason to the database.&lt;br /&gt;
  6    AddNewEmployee(v_NewFirstName, v_NewLastName);&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; select * from employee;&lt;br /&gt;
ID   FIRST_NAME           LAST_NAME            START_DAT END_DATE      SALARY CITY       DESCRIPTION&lt;br /&gt;
---- -------------------- -------------------- --------- --------- ---------- ---------- ---------------&lt;br /&gt;
01   Jason                Martin               25-JUL-96 25-JUL-06    1234.56 Toronto    Programmer&lt;br /&gt;
02   Alison               Mathews              21-MAR-76 21-FEB-86    6661.78 Vancouver  Tester&lt;br /&gt;
03   James                Smith                12-DEC-78 15-MAR-90    6544.78 Vancouver  Tester&lt;br /&gt;
04   Celia                Rice                 24-OCT-82 21-APR-99    2344.78 Vancouver  Manager&lt;br /&gt;
05   Robert               Black                15-JAN-84 08-AUG-98    2334.78 Vancouver  Tester&lt;br /&gt;
06   Linda                Green                30-JUL-87 04-JAN-96    4322.78 New York   Tester&lt;br /&gt;
07   David                Larry                31-DEC-90 12-FEB-98    7897.78 New York   Manager&lt;br /&gt;
08   James                Cat                  17-SEP-96 15-APR-02    1232.78 Vancouver  Tester&lt;br /&gt;
99   Margaret             Mason                                               AAA&lt;br /&gt;
9 rows selected.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; -- clean the table&lt;br /&gt;
SQL&amp;gt; drop table Employee&lt;br /&gt;
  2  /&lt;br /&gt;
Table dropped.&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Parameter Modes==&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 ModeTest (&lt;br /&gt;
  2    p_InParameter    IN NUMBER,&lt;br /&gt;
  3    p_OutParameter   OUT NUMBER,&lt;br /&gt;
  4    p_InOutParameter IN OUT NUMBER) IS&lt;br /&gt;
  5&lt;br /&gt;
  6    v_LocalVariable  NUMBER;&lt;br /&gt;
  7  BEGIN&lt;br /&gt;
  8    v_LocalVariable := p_InParameter;  -- Legal&lt;br /&gt;
  9&lt;br /&gt;
 10    --p_InParameter := 7;  -- Illegal&lt;br /&gt;
 11&lt;br /&gt;
 12    p_OutParameter := 7;  -- Legal&lt;br /&gt;
 13&lt;br /&gt;
 14    --v_LocalVariable := p_outParameter;  -- Illegal&lt;br /&gt;
 15&lt;br /&gt;
 16    v_LocalVariable := p_InOutParameter;  -- Legal&lt;br /&gt;
 17&lt;br /&gt;
 18    p_InOutParameter := 7;  -- Legal&lt;br /&gt;
 19  END ModeTest;&lt;br /&gt;
 20  /&lt;br /&gt;
Procedure 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;
== Passing parameters to procedures==&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; set SERVEROUTPUT ON&lt;br /&gt;
SQL&amp;gt; Create or replace procedure p_helloTo (i varchar2)&lt;br /&gt;
  2  is&lt;br /&gt;
  3     v_string varchar2(256):=&amp;quot;Hello, &amp;quot;||i||&amp;quot;!&amp;quot;;&lt;br /&gt;
  4  begin&lt;br /&gt;
  5     dbms_output.put_line(v_string);&lt;br /&gt;
  6  end;&lt;br /&gt;
  7  /&lt;br /&gt;
Procedure created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; begin&lt;br /&gt;
  2      p_helloTo(&amp;quot;Everybody&amp;quot;);&lt;br /&gt;
  3      p_helloTo(&amp;quot;You&amp;quot;);&lt;br /&gt;
  4      p_helloTo(&amp;quot;A&amp;quot;);&lt;br /&gt;
  5      p_helloTo(&amp;quot;PL/SQL&amp;quot;);&lt;br /&gt;
  6  end;&lt;br /&gt;
  7  /&lt;br /&gt;
Hello, Everybody!&lt;br /&gt;
Hello, You!&lt;br /&gt;
Hello, A!&lt;br /&gt;
Hello, PL/SQL!&lt;br /&gt;
PL/SQL procedure successfully completed.&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;
== Positional Notation==&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 OR REPLACE FUNCTION add_three_numbers( a NUMBER := 0, b NUMBER := 0, c NUMBER := 0 ) RETURN NUMBER IS&lt;br /&gt;
  2  BEGIN&lt;br /&gt;
  3    RETURN a + b + c;&lt;br /&gt;
  4  END;&lt;br /&gt;
  5  /&lt;br /&gt;
Function created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; BEGIN&lt;br /&gt;
  2    dbms_output.put_line(add_three_numbers(3,4,5));&lt;br /&gt;
  3  END;&lt;br /&gt;
  4  /&lt;br /&gt;
PL/SQL procedure successfully completed.&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Positional vs. named parameter passing.==&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; CREATE OR REPLACE PROCEDURE CallMe(pA VARCHAR2,pB NUMBER,pC BOOLEAN,pD DATE) AS&lt;br /&gt;
  2  BEGIN&lt;br /&gt;
  3    NULL;&lt;br /&gt;
  4  END CallMe;&lt;br /&gt;
  5  /&lt;br /&gt;
SP2-0804: Procedure created with compilation warnings&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; -- This call uses positional notation&lt;br /&gt;
SQL&amp;gt; DECLARE&lt;br /&gt;
  2    v1 VARCHAR2(10);&lt;br /&gt;
  3    v2 NUMBER(7,6);&lt;br /&gt;
  4    v3 BOOLEAN;&lt;br /&gt;
  5    v4 DATE;&lt;br /&gt;
  6  BEGIN&lt;br /&gt;
  7    CallMe(v1, v2, v3, v4);&lt;br /&gt;
  8  END;&lt;br /&gt;
  9  /&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;
== Specifying procedure or function parameters Positional notation==&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 OR REPLACE PROCEDURE show_line(ip_line_length IN NUMBER,ip_separator IN VARCHAR2)&lt;br /&gt;
  2  IS&lt;br /&gt;
  3&lt;br /&gt;
  4    myString VARCHAR2(150);&lt;br /&gt;
  5&lt;br /&gt;
  6  BEGIN&lt;br /&gt;
  7&lt;br /&gt;
  8    FOR idx in 1..ip_line_length LOOP&lt;br /&gt;
  9&lt;br /&gt;
 10      myString := myString || ip_separator;&lt;br /&gt;
 11&lt;br /&gt;
 12    END LOOP;&lt;br /&gt;
 13&lt;br /&gt;
 14    DBMS_OUTPUT.PUT_LINE(myString);&lt;br /&gt;
 15&lt;br /&gt;
 16  EXCEPTION WHEN OTHERS THEN&lt;br /&gt;
 17&lt;br /&gt;
 18    dbms_output.put_line(SQLERRM);&lt;br /&gt;
 19&lt;br /&gt;
 20  END;&lt;br /&gt;
 21  /&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;
SQL&amp;gt; DECLARE&lt;br /&gt;
  2    v_length NUMBER :=50;&lt;br /&gt;
  3&lt;br /&gt;
  4    v_separator VARCHAR2(1):=&amp;quot;=&amp;quot;;&lt;br /&gt;
  5&lt;br /&gt;
  6  BEGIN&lt;br /&gt;
  7&lt;br /&gt;
  8    show_line(v_length,v_separator);&lt;br /&gt;
  9&lt;br /&gt;
 10  END;&lt;br /&gt;
 11  /&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Table collection type parameter==&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 OR REPLACE TYPE strings_nt IS TABLE OF VARCHAR2(100);&lt;br /&gt;
  2  /&lt;br /&gt;
Type created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE PACKAGE employees_pkg&lt;br /&gt;
  2  IS&lt;br /&gt;
  3     vancouver_employees strings_nt := strings_nt (&amp;quot;R&amp;quot;, &amp;quot;H&amp;quot;, &amp;quot;D&amp;quot;, &amp;quot;S&amp;quot;, &amp;quot;C&amp;quot;);&lt;br /&gt;
  4     newyork_employees   strings_nt := strings_nt (&amp;quot;H&amp;quot;, &amp;quot;S&amp;quot;, &amp;quot;A&amp;quot;);&lt;br /&gt;
  5     boston_employees    strings_nt := strings_nt (&amp;quot;S&amp;quot;, &amp;quot;D&amp;quot;);&lt;br /&gt;
  6&lt;br /&gt;
  7     PROCEDURE show_employees(title_in IN VARCHAR2,employees_in IN strings_nt);&lt;br /&gt;
  8  END;&lt;br /&gt;
  9  /&lt;br /&gt;
Package created.&lt;br /&gt;
SQL&amp;gt; SHO ERR&lt;br /&gt;
No errors.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE PACKAGE BODY employees_pkg&lt;br /&gt;
  2  IS&lt;br /&gt;
  3     PROCEDURE show_employees (title_in IN VARCHAR2,employees_in IN strings_nt)&lt;br /&gt;
  4     IS&lt;br /&gt;
  5     BEGIN&lt;br /&gt;
  6        DBMS_OUTPUT.put_line (title_in);&lt;br /&gt;
  7&lt;br /&gt;
  8        FOR indx IN employees_in.FIRST .. employees_in.LAST&lt;br /&gt;
  9        LOOP&lt;br /&gt;
 10           DBMS_OUTPUT.put_line (indx || &amp;quot; = &amp;quot; || employees_in (indx));&lt;br /&gt;
 11        END LOOP;&lt;br /&gt;
 12&lt;br /&gt;
 13     END show_employees;&lt;br /&gt;
 14  END;&lt;br /&gt;
 15  /&lt;br /&gt;
Package body created.&lt;br /&gt;
SQL&amp;gt;&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;&lt;br /&gt;
SQL&amp;gt; DECLARE&lt;br /&gt;
  2     our_favorites   strings_nt := strings_nt ();&lt;br /&gt;
  3  BEGIN&lt;br /&gt;
  4     our_favorites := employees_pkg.vancouver_employees MULTISET UNION&lt;br /&gt;
  5        employees_pkg.newyork_employees;&lt;br /&gt;
  6&lt;br /&gt;
  7     employees_pkg.show_employees ( &amp;quot;STEVEN then VEVA&amp;quot;, our_favorites);&lt;br /&gt;
  8  END;&lt;br /&gt;
  9  /&lt;br /&gt;
PL/SQL procedure successfully completed.&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== There are three types of formal parameters in subprograms: IN, OUT, and IN OUT.==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;IN parameters are used to pass values into the subprogram. but can&amp;quot;t be changed.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;IN Parameters are really a constant.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;IN Parameters work in only one direction from the main program to subprogram.&amp;lt;/p&amp;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; create or replace function getArea (i_rad NUMBER)&lt;br /&gt;
  2  return NUMBER&lt;br /&gt;
  3  is&lt;br /&gt;
  4  begin&lt;br /&gt;
  5     if i_rad is null            -- legal&lt;br /&gt;
  6     then&lt;br /&gt;
  7       -- i_rad:=10;             -- ILLEGAL&lt;br /&gt;
  8       return null;&lt;br /&gt;
  9     end if;&lt;br /&gt;
 10     return 3.14*(i_rad**2);     -- legal&lt;br /&gt;
 11  end;&lt;br /&gt;
 12  /&lt;br /&gt;
Function created.&lt;br /&gt;
SQL&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Use IF/ELSIF/ELSE to verify the input parameter==&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; set serveroutput on&lt;br /&gt;
SQL&amp;gt; set echo on&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE FUNCTION emptype (paytype CHAR)&lt;br /&gt;
  2       RETURN VARCHAR2 IS&lt;br /&gt;
  3  BEGIN&lt;br /&gt;
  4       IF paytype = &amp;quot;H&amp;quot; THEN&lt;br /&gt;
  5            RETURN &amp;quot;Hourly&amp;quot;;&lt;br /&gt;
  6       ELSIF paytype = &amp;quot;S&amp;quot; THEN&lt;br /&gt;
  7            RETURN &amp;quot;Salaried&amp;quot;;&lt;br /&gt;
  8       ELSIF paytype = &amp;quot;E&amp;quot; THEN&lt;br /&gt;
  9            RETURN &amp;quot;Executive&amp;quot;;&lt;br /&gt;
 10       ELSE&lt;br /&gt;
 11            RETURN &amp;quot;Invalid Type&amp;quot;;&lt;br /&gt;
 12       END IF;&lt;br /&gt;
 13  EXCEPTION&lt;br /&gt;
 14       WHEN OTHERS THEN&lt;br /&gt;
 15            RETURN &amp;quot;Error Encountered&amp;quot;;&lt;br /&gt;
 16  END emptype;&lt;br /&gt;
 17  /&lt;br /&gt;
Function created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; BEGIN&lt;br /&gt;
  2       DBMS_OUTPUT.PUT_LINE(&amp;quot;emptype &amp;quot; || emptype(&amp;quot;H&amp;quot;));&lt;br /&gt;
  3       DBMS_OUTPUT.PUT_LINE(&amp;quot;emptype &amp;quot; || emptype(&amp;quot;S&amp;quot;));&lt;br /&gt;
  4       DBMS_OUTPUT.PUT_LINE(&amp;quot;emptype &amp;quot; || emptype(&amp;quot;E&amp;quot;));&lt;br /&gt;
  5       DBMS_OUTPUT.PUT_LINE(&amp;quot;emptype &amp;quot; || emptype(&amp;quot;A&amp;quot;));&lt;br /&gt;
  6  END;&lt;br /&gt;
  7  /&lt;br /&gt;
emptype Hourly&lt;br /&gt;
emptype Salaried&lt;br /&gt;
emptype Executive&lt;br /&gt;
emptype Invalid Type&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;
== Use mixed notation to avoid the second parameter, but keep the first and third==&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 p_print(i_str1 VARCHAR2 :=&amp;quot;hello&amp;quot;,&lt;br /&gt;
  2                                      i_str2 VARCHAR2 :=&amp;quot;world&amp;quot;,&lt;br /&gt;
  3                                      i_end VARCHAR2  :=&amp;quot;!&amp;quot; )&lt;br /&gt;
  4  is&lt;br /&gt;
  5  begin&lt;br /&gt;
  6       DBMS_OUTPUT.put_line(i_str1||&amp;quot;,&amp;quot;||i_str2||i_end);&lt;br /&gt;
  7  end;&lt;br /&gt;
  8  /&lt;br /&gt;
Procedure created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; declare&lt;br /&gt;
  2  begin&lt;br /&gt;
  3     p_print(&amp;quot;Hi&amp;quot;,i_end=&amp;gt;&amp;quot;...&amp;quot;); -- mixed&lt;br /&gt;
  4     p_print(i_str1=&amp;gt;&amp;quot;Hi&amp;quot;,i_end=&amp;gt;&amp;quot;...&amp;quot;); -- pure named&lt;br /&gt;
  5  end;&lt;br /&gt;
  6  /&lt;br /&gt;
Hi,world...&lt;br /&gt;
Hi,world...&lt;br /&gt;
PL/SQL procedure successfully completed.&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;
== Use ROWTYPE as the parameter==&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 demo table&lt;br /&gt;
SQL&amp;gt; create table Employee(&lt;br /&gt;
  2    ID                 VARCHAR2(4 BYTE)         NOT NULL primary key,&lt;br /&gt;
  3    First_Name         VARCHAR2(10 BYTE),&lt;br /&gt;
  4    Last_Name          VARCHAR2(10 BYTE),&lt;br /&gt;
  5    Start_Date         DATE,&lt;br /&gt;
  6    End_Date           DATE,&lt;br /&gt;
  7    Salary             Number(8,2),&lt;br /&gt;
  8    City               VARCHAR2(10 BYTE),&lt;br /&gt;
  9    Description        VARCHAR2(15 BYTE)&lt;br /&gt;
 10  )&lt;br /&gt;
 11  /&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; -- prepare data&lt;br /&gt;
SQL&amp;gt; insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary,  City,       Description)&lt;br /&gt;
  2               values (&amp;quot;01&amp;quot;,&amp;quot;Jason&amp;quot;,    &amp;quot;Martin&amp;quot;,  to_date(&amp;quot;19960725&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), to_date(&amp;quot;20060725&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 1234.56, &amp;quot;Toronto&amp;quot;,  &amp;quot;Programmer&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary,  City,       Description)&lt;br /&gt;
  2                values(&amp;quot;02&amp;quot;,&amp;quot;Alison&amp;quot;,   &amp;quot;Mathews&amp;quot;, to_date(&amp;quot;19760321&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), to_date(&amp;quot;19860221&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 6661.78, &amp;quot;Vancouver&amp;quot;,&amp;quot;Tester&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary,  City,       Description)&lt;br /&gt;
  2                values(&amp;quot;03&amp;quot;,&amp;quot;James&amp;quot;,    &amp;quot;Smith&amp;quot;,   to_date(&amp;quot;19781212&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), to_date(&amp;quot;19900315&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 6544.78, &amp;quot;Vancouver&amp;quot;,&amp;quot;Tester&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary,  City,       Description)&lt;br /&gt;
  2                values(&amp;quot;04&amp;quot;,&amp;quot;Celia&amp;quot;,    &amp;quot;Rice&amp;quot;,    to_date(&amp;quot;19821024&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), to_date(&amp;quot;19990421&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 2344.78, &amp;quot;Vancouver&amp;quot;,&amp;quot;Manager&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary,  City,       Description)&lt;br /&gt;
  2                values(&amp;quot;05&amp;quot;,&amp;quot;Robert&amp;quot;,   &amp;quot;Black&amp;quot;,   to_date(&amp;quot;19840115&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), to_date(&amp;quot;19980808&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 2334.78, &amp;quot;Vancouver&amp;quot;,&amp;quot;Tester&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary, City,        Description)&lt;br /&gt;
  2                values(&amp;quot;06&amp;quot;,&amp;quot;Linda&amp;quot;,    &amp;quot;Green&amp;quot;,   to_date(&amp;quot;19870730&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), to_date(&amp;quot;19960104&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 4322.78,&amp;quot;New York&amp;quot;,  &amp;quot;Tester&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary, City,        Description)&lt;br /&gt;
  2                values(&amp;quot;07&amp;quot;,&amp;quot;David&amp;quot;,    &amp;quot;Larry&amp;quot;,   to_date(&amp;quot;19901231&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), to_date(&amp;quot;19980212&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 7897.78,&amp;quot;New York&amp;quot;,  &amp;quot;Manager&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary, City,        Description)&lt;br /&gt;
  2                values(&amp;quot;08&amp;quot;,&amp;quot;James&amp;quot;,    &amp;quot;Cat&amp;quot;,     to_date(&amp;quot;19960917&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), to_date(&amp;quot;20020415&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 1232.78,&amp;quot;Vancouver&amp;quot;, &amp;quot;Tester&amp;quot;)&lt;br /&gt;
  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;&lt;br /&gt;
SQL&amp;gt; -- display data in the table&lt;br /&gt;
SQL&amp;gt; select * from Employee&lt;br /&gt;
  2  /&lt;br /&gt;
&lt;br /&gt;
ID   FIRST_NAME LAST_NAME  START_DAT END_DATE      SALARY CITY       DESCRIPTION&lt;br /&gt;
---- ---------- ---------- --------- --------- ---------- ---------- ---------------&lt;br /&gt;
01   Jason      Martin     25-JUL-96 25-JUL-06    1234.56 Toronto    Programmer&lt;br /&gt;
02   Alison     Mathews    21-MAR-76 21-FEB-86    6661.78 Vancouver  Tester&lt;br /&gt;
03   James      Smith      12-DEC-78 15-MAR-90    6544.78 Vancouver  Tester&lt;br /&gt;
04   Celia      Rice       24-OCT-82 21-APR-99    2344.78 Vancouver  Manager&lt;br /&gt;
05   Robert     Black      15-JAN-84 08-AUG-98    2334.78 Vancouver  Tester&lt;br /&gt;
06   Linda      Green      30-JUL-87 04-JAN-96    4322.78 New York   Tester&lt;br /&gt;
07   David      Larry      31-DEC-90 12-FEB-98    7897.78 New York   Manager&lt;br /&gt;
08   James      Cat        17-SEP-96 15-APR-02    1232.78 Vancouver  Tester&lt;br /&gt;
8 rows selected.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE PROCEDURE update_emp (emp_rec employee%ROWTYPE) IS&lt;br /&gt;
  2  BEGIN&lt;br /&gt;
  3       UPDATE employee&lt;br /&gt;
  4       SET    start_date = emp_rec.start_date + 100&lt;br /&gt;
  5       WHERE id = emp_rec.id;&lt;br /&gt;
  6  END update_emp;&lt;br /&gt;
  7  /&lt;br /&gt;
Procedure created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; DECLARE&lt;br /&gt;
  2       a employee%ROWTYPE;&lt;br /&gt;
  3  BEGIN&lt;br /&gt;
  4       a.id := &amp;quot;01&amp;quot;;&lt;br /&gt;
  5       update_emp(a);&lt;br /&gt;
  6  END;&lt;br /&gt;
  7  /&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt; SELECT * FROM employee;&lt;br /&gt;
&lt;br /&gt;
ID   FIRST_NAME LAST_NAME  START_DAT END_DATE      SALARY CITY       DESCRIPTION&lt;br /&gt;
---- ---------- ---------- --------- --------- ---------- ---------- ---------------&lt;br /&gt;
01   Jason      Martin               25-JUL-06    1234.56 Toronto    Programmer&lt;br /&gt;
02   Alison     Mathews    21-MAR-76 21-FEB-86    6661.78 Vancouver  Tester&lt;br /&gt;
03   James      Smith      12-DEC-78 15-MAR-90    6544.78 Vancouver  Tester&lt;br /&gt;
04   Celia      Rice       24-OCT-82 21-APR-99    2344.78 Vancouver  Manager&lt;br /&gt;
05   Robert     Black      15-JAN-84 08-AUG-98    2334.78 Vancouver  Tester&lt;br /&gt;
06   Linda      Green      30-JUL-87 04-JAN-96    4322.78 New York   Tester&lt;br /&gt;
07   David      Larry      31-DEC-90 12-FEB-98    7897.78 New York   Manager&lt;br /&gt;
08   James      Cat        17-SEP-96 15-APR-02    1232.78 Vancouver  Tester&lt;br /&gt;
8 rows selected.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; -- clean the table&lt;br /&gt;
SQL&amp;gt; drop table Employee&lt;br /&gt;
  2  /&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;
== Using Named Notation==&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 p_print(i_str1 VARCHAR2 :=&amp;quot;hello&amp;quot;,&lt;br /&gt;
  2                                      i_str2 VARCHAR2 :=&amp;quot;world&amp;quot;,&lt;br /&gt;
  3                                      i_end VARCHAR2  :=&amp;quot;!&amp;quot; )&lt;br /&gt;
  4  is&lt;br /&gt;
  5  begin&lt;br /&gt;
  6       DBMS_OUTPUT.put_line(i_str1||&amp;quot;,&amp;quot;||i_str2||i_end);&lt;br /&gt;
  7  end;&lt;br /&gt;
  8  /&lt;br /&gt;
Procedure created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; declare&lt;br /&gt;
  2  begin&lt;br /&gt;
  3      p_print(i_str2=&amp;gt;&amp;quot;people&amp;quot;);    -- just the second&lt;br /&gt;
  4      p_print(i_end=&amp;gt;&amp;quot;...&amp;quot;);        -- just the third&lt;br /&gt;
  5      p_print(i_end=&amp;gt;&amp;quot;...&amp;quot;,i_str2=&amp;gt;&amp;quot;people&amp;quot;);  -- mix&lt;br /&gt;
  6  end;&lt;br /&gt;
  7  /&lt;br /&gt;
hello,people!&lt;br /&gt;
hello,world...&lt;br /&gt;
hello,people...&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>