<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://www.sqle.ru/index.php?action=history&amp;feed=atom&amp;title=Oracle_PL%2FSQL%2FStored_Procedure_Function%2FProcedure_Parameters</id>
		<title>Oracle PL/SQL/Stored Procedure Function/Procedure Parameters - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://www.sqle.ru/index.php?action=history&amp;feed=atom&amp;title=Oracle_PL%2FSQL%2FStored_Procedure_Function%2FProcedure_Parameters"/>
		<link rel="alternate" type="text/html" href="http://www.sqle.ru/index.php?title=Oracle_PL/SQL/Stored_Procedure_Function/Procedure_Parameters&amp;action=history"/>
		<updated>2026-05-24T22:38:26Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://www.sqle.ru/index.php?title=Oracle_PL/SQL/Stored_Procedure_Function/Procedure_Parameters&amp;diff=2094&amp;oldid=prev</id>
		<title> в 13:45, 26 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://www.sqle.ru/index.php?title=Oracle_PL/SQL/Stored_Procedure_Function/Procedure_Parameters&amp;diff=2094&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://www.sqle.ru/index.php?title=Oracle_PL/SQL/Stored_Procedure_Function/Procedure_Parameters&amp;diff=2095&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://www.sqle.ru/index.php?title=Oracle_PL/SQL/Stored_Procedure_Function/Procedure_Parameters&amp;diff=2095&amp;oldid=prev"/>
				<updated>2010-05-26T10:00:54Z</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;==create and pass in three parms==&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&lt;br /&gt;
  2  procedure three_parms(&lt;br /&gt;
  3    p_p1 number,&lt;br /&gt;
  4    p_p2 number,&lt;br /&gt;
  5    p_p3 number ) as&lt;br /&gt;
  6  begin&lt;br /&gt;
  7    dbms_output.put_line( &amp;quot;p_p1 = &amp;quot; || p_p1 );&lt;br /&gt;
  8    dbms_output.put_line( &amp;quot;p_p2 = &amp;quot; || p_p2 );&lt;br /&gt;
  9    dbms_output.put_line( &amp;quot;p_p3 = &amp;quot; || p_p3 );&lt;br /&gt;
 10  end three_parms;&lt;br /&gt;
 11  /&lt;br /&gt;
Procedure created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;  set serverout on&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;  exec three_parms( p_p1 =&amp;gt; 12, p_p3 =&amp;gt; 3, p_p2 =&amp;gt; 68 );&lt;br /&gt;
p_p1 = 12&lt;br /&gt;
p_p2 = 68&lt;br /&gt;
p_p3 = 3&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&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 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;
    &lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create or replace&lt;br /&gt;
  2    procedure default_values(&lt;br /&gt;
  3    p_parm1 varchar2,&lt;br /&gt;
  4    p_parm2 varchar2 default &amp;quot;default 1&amp;quot;,&lt;br /&gt;
  5    p_parm3 varchar2 default &amp;quot;default 2&amp;quot; ) as&lt;br /&gt;
  6  begin&lt;br /&gt;
  7    dbms_output.put_line( p_parm1 );&lt;br /&gt;
  8    dbms_output.put_line( p_parm2 );&lt;br /&gt;
  9    dbms_output.put_line( p_parm3 );&lt;br /&gt;
 10  end default_values;&lt;br /&gt;
 11  /&lt;br /&gt;
Procedure created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; exec default_values( &amp;quot;Tom&amp;quot;, p_parm3 =&amp;gt; &amp;quot;Joel&amp;quot; );&lt;br /&gt;
Tom&lt;br /&gt;
default 1&lt;br /&gt;
Joel&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; exec default_values( p_parm4 =&amp;gt; &amp;quot;Tom&amp;quot; );&lt;br /&gt;
BEGIN default_values( p_parm4 =&amp;gt; &amp;quot;Tom&amp;quot; ); END;&lt;br /&gt;
      *&lt;br /&gt;
ERROR at line 1:&lt;br /&gt;
ORA-06550: line 1, column 7:&lt;br /&gt;
PLS-00306: wrong number or types of arguments in call to &amp;quot;DEFAULT_VALUES&amp;quot;&lt;br /&gt;
ORA-06550: line 1, column 7:&lt;br /&gt;
PL/SQL: Statement ignored&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Default Parameter 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;
    &lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE Instructor (&lt;br /&gt;
  2     InstructorID INT NOT NULL PRIMARY KEY,&lt;br /&gt;
  3     Name        VARCHAR(50) NOT NULL);&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO Instructor (InstructorID,Name) VALUES (1,&amp;quot;Victor&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO Instructor (InstructorID,Name) VALUES (2,&amp;quot;Bill&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO Instructor (InstructorID,Name) VALUES (3,&amp;quot;Mary&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO Instructor (InstructorID,Name) VALUES (4,&amp;quot;Jack&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO Instructor (InstructorID,Name) VALUES (5,&amp;quot;Peter&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO Instructor (InstructorID,Name) VALUES (6,&amp;quot;Tom&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE PROCEDURE InsertInstructor (i_ProfID IN INT,&lt;br /&gt;
  2     i_ProfName IN VARCHAR DEFAULT &amp;quot;Prof. A.N. Other&amp;quot;)&lt;br /&gt;
  3  AS&lt;br /&gt;
  4  BEGIN&lt;br /&gt;
  5     INSERT INTO Instructor (InstructorID, Name)&lt;br /&gt;
  6     VALUES (i_ProfID, i_ProfName);&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;&lt;br /&gt;
SQL&amp;gt; drop table Instructor;&lt;br /&gt;
Table dropped.&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Different ways of calling a procedure with default parameters.==&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;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE PROCEDURE DefaultTest (&lt;br /&gt;
  2    p_ParameterA NUMBER DEFAULT 10,&lt;br /&gt;
  3    p_ParameterB VARCHAR2 DEFAULT &amp;quot;abcdef&amp;quot;,&lt;br /&gt;
  4    p_ParameterC DATE DEFAULT SYSDATE) AS&lt;br /&gt;
  5  BEGIN&lt;br /&gt;
  6    DBMS_OUTPUT.PUT_LINE(&lt;br /&gt;
  7      &amp;quot;A: &amp;quot; || p_ParameterA ||&lt;br /&gt;
  8      &amp;quot;  B: &amp;quot; || p_ParameterB ||&lt;br /&gt;
  9      &amp;quot;  C: &amp;quot; || TO_CHAR(p_ParameterC, &amp;quot;DD-MON-YYYY&amp;quot;));&lt;br /&gt;
 10  END DefaultTest;&lt;br /&gt;
 11  /&lt;br /&gt;
Procedure created.&lt;br /&gt;
SQL&amp;gt; show errors&lt;br /&gt;
No errors.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; BEGIN&lt;br /&gt;
  2    DefaultTest(p_ParameterA =&amp;gt; 7, p_ParameterC =&amp;gt; &amp;quot;30-DEC-95&amp;quot;);&lt;br /&gt;
  3  END;&lt;br /&gt;
  4  /&lt;br /&gt;
END;&lt;br /&gt;
   *&lt;br /&gt;
ERROR at line 3:&lt;br /&gt;
ORA-01843: not a valid month&lt;br /&gt;
ORA-06512: at line 2&lt;br /&gt;
&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; BEGIN&lt;br /&gt;
  2    DefaultTest(7);&lt;br /&gt;
  3  END;&lt;br /&gt;
  4  /&lt;br /&gt;
A: 7  B: abcdef  C: 19-JUN-2008&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==First 2 parameters passed by position, the second 2 are passed by name==&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 CallMe(&lt;br /&gt;
  2    p_ParameterA VARCHAR2,&lt;br /&gt;
  3    p_ParameterB NUMBER,&lt;br /&gt;
  4    p_ParameterC BOOLEAN,&lt;br /&gt;
  5    p_ParameterD DATE) AS&lt;br /&gt;
  6  BEGIN&lt;br /&gt;
  7    NULL;&lt;br /&gt;
  8  END CallMe;&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; DECLARE&lt;br /&gt;
  2    v_Variable1 VARCHAR2(10);&lt;br /&gt;
  3    v_Variable2 NUMBER(7,6);&lt;br /&gt;
  4    v_Variable3 BOOLEAN;&lt;br /&gt;
  5    v_Variable4 DATE;&lt;br /&gt;
  6  BEGIN&lt;br /&gt;
  7    CallMe(v_Variable1, v_Variable2,&lt;br /&gt;
  8           p_ParameterC =&amp;gt; v_Variable3,&lt;br /&gt;
  9           p_ParameterD =&amp;gt; v_Variable4);&lt;br /&gt;
 10  END;&lt;br /&gt;
 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;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Legal and illegal formal parameters which are constrained by length.==&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;&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 ParameterLength (&lt;br /&gt;
  2    p_Parameter1 IN OUT VARCHAR2(10),&lt;br /&gt;
  3    p_Parameter2 IN OUT NUMBER(3,1)) AS&lt;br /&gt;
  4  BEGIN&lt;br /&gt;
  5    p_Parameter1 := &amp;quot;abcdefghijklm&amp;quot;;&lt;br /&gt;
  6    p_Parameter2 := 12.3;&lt;br /&gt;
  7  END ParameterLength;&lt;br /&gt;
  8  /&lt;br /&gt;
Warning: Procedure created with compilation errors.&lt;br /&gt;
SQL&amp;gt; SHOW ERRORS&lt;br /&gt;
Errors for PROCEDURE PARAMETERLENGTH:&lt;br /&gt;
LINE/COL ERROR&lt;br /&gt;
-------- -----------------------------------------------------------------&lt;br /&gt;
2/31     PLS-00103: Encountered the symbol &amp;quot;(&amp;quot; when expecting one of the&lt;br /&gt;
         following:&lt;br /&gt;
         := . ) , @ % default character&lt;br /&gt;
         The symbol &amp;quot;:=&amp;quot; was substituted for &amp;quot;(&amp;quot; to continue.&lt;br /&gt;
3/29     PLS-00103: Encountered the symbol &amp;quot;(&amp;quot; when expecting one of the&lt;br /&gt;
         following:&lt;br /&gt;
         := . ) , @ % default character&lt;br /&gt;
         The symbol &amp;quot;:=&amp;quot; was substituted for &amp;quot;(&amp;quot; to continue.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; DECLARE&lt;br /&gt;
  2    v_Variable1 VARCHAR2(40);&lt;br /&gt;
  3    v_Variable2 NUMBER(7,3);&lt;br /&gt;
  4  BEGIN&lt;br /&gt;
  5    ParameterLength(v_Variable1, v_Variable2);&lt;br /&gt;
  6  END;&lt;br /&gt;
  7  /&lt;br /&gt;
  ParameterLength(v_Variable1, v_Variable2);&lt;br /&gt;
  *&lt;br /&gt;
ERROR at line 5:&lt;br /&gt;
ORA-06550: line 5, column 3:&lt;br /&gt;
PLS-00905: object sqle.PARAMETERLENGTH is invalid&lt;br /&gt;
ORA-06550: line 5, column 3:&lt;br /&gt;
PL/SQL: Statement ignored&lt;br /&gt;
&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==NOCOPY modifier.==&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 NoCopyTest (&lt;br /&gt;
  2    p_InParameter    IN NUMBER,&lt;br /&gt;
  3    p_OutParameter   OUT NOCOPY VARCHAR2,&lt;br /&gt;
  4    p_InOutParameter IN OUT NOCOPY CHAR) IS&lt;br /&gt;
  5  BEGIN&lt;br /&gt;
  6    NULL;&lt;br /&gt;
  7  END NoCopyTest;&lt;br /&gt;
  8  /&lt;br /&gt;
Procedure created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==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;
    &lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create table numbers(&lt;br /&gt;
  2    n number,&lt;br /&gt;
  3    username varchar2(30) )&lt;br /&gt;
  4  /&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&lt;br /&gt;
  2  procedure insert_numbers( p_num number ) authid definer as&lt;br /&gt;
  3  begin&lt;br /&gt;
  4    insert into numbers values ( p_num, user );&lt;br /&gt;
  5  end insert_numbers;&lt;br /&gt;
  6  /&lt;br /&gt;
Procedure created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; EXEC insert_numbers(1);&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; select * from numbers;&lt;br /&gt;
         N USERNAME&lt;br /&gt;
---------- ------------------------------&lt;br /&gt;
         1 SYS&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table numbers;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==ParameterLength using %TYPE for the parameters(Calling ParameterLength illegally (ORA-6502))==&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 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; SET echo on&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE PROCEDURE ParameterLength (&lt;br /&gt;
  2    p_Parameter1 IN OUT VARCHAR2,&lt;br /&gt;
  3    p_Parameter2 IN OUT lecturer.current_credits%TYPE) AS&lt;br /&gt;
  4  BEGIN&lt;br /&gt;
  5    p_Parameter2 := 12345;&lt;br /&gt;
  6  END ParameterLength;&lt;br /&gt;
  7  /&lt;br /&gt;
Procedure created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; DECLARE&lt;br /&gt;
  2    v_Variable1 VARCHAR2(1);&lt;br /&gt;
  3    v_Variable2 NUMBER;&lt;br /&gt;
  4  BEGIN&lt;br /&gt;
  5    ParameterLength(v_Variable1, v_Variable2);&lt;br /&gt;
  6  END;&lt;br /&gt;
  7  /&lt;br /&gt;
DECLARE&lt;br /&gt;
*&lt;br /&gt;
ERROR at line 1:&lt;br /&gt;
ORA-06502: PL/SQL: numeric or value error: number precision too large&lt;br /&gt;
ORA-06512: at &amp;quot;sqle.PARAMETERLENGTH&amp;quot;, line 5&lt;br /&gt;
ORA-06512: at line 5&lt;br /&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;&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Passing parameter by parameter name==&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 CallMe(&lt;br /&gt;
  2    p_ParameterA VARCHAR2,&lt;br /&gt;
  3    p_ParameterB NUMBER,&lt;br /&gt;
  4    p_ParameterC BOOLEAN,&lt;br /&gt;
  5    p_ParameterD DATE) AS&lt;br /&gt;
  6  BEGIN&lt;br /&gt;
  7    NULL;&lt;br /&gt;
  8  END CallMe;&lt;br /&gt;
  9  /&lt;br /&gt;
Procedure created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; DECLARE&lt;br /&gt;
  2    v_Variable1 VARCHAR2(10);&lt;br /&gt;
  3    v_Variable2 NUMBER(7,6);&lt;br /&gt;
  4    v_Variable3 BOOLEAN;&lt;br /&gt;
  5    v_Variable4 DATE;&lt;br /&gt;
  6  BEGIN&lt;br /&gt;
  7    CallMe(p_ParameterA =&amp;gt; v_Variable1,&lt;br /&gt;
  8           p_ParameterB =&amp;gt; v_Variable2,&lt;br /&gt;
  9           p_ParameterC =&amp;gt; v_Variable3,&lt;br /&gt;
 10           p_ParameterD =&amp;gt; v_Variable4);&lt;br /&gt;
 11  END;&lt;br /&gt;
 12  /&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Pass null to 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; set serveroutput on&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE PROCEDURE CallProc1(p1 IN VARCHAR2 := NULL) AS&lt;br /&gt;
  2  BEGIN&lt;br /&gt;
  3    DBMS_OUTPUT.PUT_LINE(&amp;quot;CallProc1 called with &amp;quot; || p1);&lt;br /&gt;
  4  END CallProc1;&lt;br /&gt;
  5  /&lt;br /&gt;
Procedure created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CALL CallProc1(&amp;quot;Hello!&amp;quot;);&lt;br /&gt;
CallProc1 called with Hello!&lt;br /&gt;
Call completed.&lt;br /&gt;
SQL&amp;gt; CALL CallProc1();&lt;br /&gt;
CallProc1 called with&lt;br /&gt;
Call completed.&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==positional and named notation for procedure 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;
    &lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE PROCEDURE CallMe(&lt;br /&gt;
  2    p_ParameterA VARCHAR2,&lt;br /&gt;
  3    p_ParameterB NUMBER,&lt;br /&gt;
  4    p_ParameterC BOOLEAN,&lt;br /&gt;
  5    p_ParameterD DATE) AS&lt;br /&gt;
  6  BEGIN&lt;br /&gt;
  7    NULL;&lt;br /&gt;
  8  END CallMe;&lt;br /&gt;
  9  /&lt;br /&gt;
Procedure created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; DECLARE&lt;br /&gt;
  2    v_Variable1 VARCHAR2(10);&lt;br /&gt;
  3    v_Variable2 NUMBER(7,6);&lt;br /&gt;
  4    v_Variable3 BOOLEAN;&lt;br /&gt;
  5    v_Variable4 DATE;&lt;br /&gt;
  6  BEGIN&lt;br /&gt;
  7    CallMe(v_Variable1, v_Variable2, v_Variable3, v_Variable4);&lt;br /&gt;
  8  END;&lt;br /&gt;
  9  /&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&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;
    &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;&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&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 with colunm type as parameter type==&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 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; set serveroutput on&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE PROCEDURE printLecturer(p_Major IN lecturer.major%TYPE) AS&lt;br /&gt;
  2    CURSOR c_lecturer IS&lt;br /&gt;
  3      SELECT first_name, last_name FROM lecturer WHERE major = p_Major;&lt;br /&gt;
  4  BEGIN&lt;br /&gt;
  5    FOR v_StudentRec IN c_lecturer LOOP&lt;br /&gt;
  6      DBMS_OUTPUT.PUT_LINE(v_StudentRec.first_name || &amp;quot; &amp;quot; ||v_StudentRec.last_name);&lt;br /&gt;
  7    END LOOP;&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; BEGIN&lt;br /&gt;
  2    printLecturer(&amp;quot;Computer Science&amp;quot;);&lt;br /&gt;
  3  END;&lt;br /&gt;
  4  /&lt;br /&gt;
Scott Lawson&lt;br /&gt;
Jone Bliss&lt;br /&gt;
Sharon Clear&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table lecturer;&lt;br /&gt;
Table dropped.&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&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 with four parameters==&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 CallMe(&lt;br /&gt;
  2    p_ParameterA VARCHAR2,&lt;br /&gt;
  3    p_ParameterB NUMBER,&lt;br /&gt;
  4    p_ParameterC BOOLEAN,&lt;br /&gt;
  5    p_ParameterD DATE) AS&lt;br /&gt;
  6  BEGIN&lt;br /&gt;
  7    NULL;&lt;br /&gt;
  8  END CallMe;&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; DECLARE&lt;br /&gt;
  2    v_Variable1 VARCHAR2(10);&lt;br /&gt;
  3    v_Variable2 NUMBER(7,6);&lt;br /&gt;
  4    v_Variable3 BOOLEAN;&lt;br /&gt;
  5    v_Variable4 DATE;&lt;br /&gt;
  6  BEGIN&lt;br /&gt;
  7    CallMe(p_ParameterB =&amp;gt; v_Variable2,&lt;br /&gt;
  8           p_ParameterC =&amp;gt; v_Variable3,&lt;br /&gt;
  9           p_ParameterD =&amp;gt; v_Variable4,&lt;br /&gt;
 10           p_ParameterA =&amp;gt; v_Variable1);&lt;br /&gt;
 11  END;&lt;br /&gt;
 12  /&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Store procedure with three parameters==&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; -- store procedure with three parameters&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create or replace&lt;br /&gt;
  2  procedure three_parms(&lt;br /&gt;
  3    p_p1 number,&lt;br /&gt;
  4    p_p2 number,&lt;br /&gt;
  5    p_p3 number ) as&lt;br /&gt;
  6  begin&lt;br /&gt;
  7    dbms_output.put_line( &amp;quot;p_p1 = &amp;quot; || p_p1 );&lt;br /&gt;
  8    dbms_output.put_line( &amp;quot;p_p2 = &amp;quot; || p_p2 );&lt;br /&gt;
  9    dbms_output.put_line( &amp;quot;p_p3 = &amp;quot; || p_p3 );&lt;br /&gt;
 10  end three_parms;&lt;br /&gt;
 11  /&lt;br /&gt;
Procedure created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;  set serverout on&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;  exec three_parms( p_p1 =&amp;gt; 12, p_p3 =&amp;gt; 3, p_p2 =&amp;gt; 68 );&lt;br /&gt;
p_p1 = 12&lt;br /&gt;
p_p2 = 68&lt;br /&gt;
p_p3 = 3&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
           &lt;br /&gt;
         &lt;br /&gt;
    &lt;br /&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 column type to control parameter type==&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 books (&lt;br /&gt;
  2     isbn      CHAR(10) PRIMARY KEY,&lt;br /&gt;
  3     category  VARCHAR2(20),&lt;br /&gt;
  4     title     VARCHAR2(100),&lt;br /&gt;
  5     num_pages NUMBER,&lt;br /&gt;
  6     price     NUMBER,&lt;br /&gt;
  7     copyright NUMBER(4),&lt;br /&gt;
  8     emp1   NUMBER,&lt;br /&gt;
  9     emp2   NUMBER,&lt;br /&gt;
 10     emp3   NUMBER&lt;br /&gt;
 11   );&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; CREATE OR REPLACE PROCEDURE ParameterLength (p1 IN OUT VARCHAR2,p2 IN OUT books.copyright%TYPE) AS&lt;br /&gt;
  2   BEGIN&lt;br /&gt;
  3     p2 :=345;&lt;br /&gt;
  4   END ParameterLength;&lt;br /&gt;
  5   /&lt;br /&gt;
Procedure created.&lt;br /&gt;
SQL&amp;gt;&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;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; DECLARE&lt;br /&gt;
  2     v1 VARCHAR2(1);&lt;br /&gt;
  3     v2 NUMBER;&lt;br /&gt;
  4   BEGIN&lt;br /&gt;
  5     ParameterLength(v1, v2);&lt;br /&gt;
  6   END;&lt;br /&gt;
  7   /&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;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table books;&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;
SQL&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&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 concatenation to wrap string passed in==&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 OR REPLACE PROCEDURE format_string( string_in IN OUT VARCHAR2 ) IS&lt;br /&gt;
  2  BEGIN&lt;br /&gt;
  3    string_in := &amp;quot;[&amp;quot;||string_in||&amp;quot;]&amp;quot;;&lt;br /&gt;
  4  END;&lt;br /&gt;
  5  /&lt;br /&gt;
Procedure created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==User-defined 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;
    &lt;br /&gt;
SQL&amp;gt; create or replace type rec is object&lt;br /&gt;
  2   ( a number,&lt;br /&gt;
  3   b number,&lt;br /&gt;
  4   c varchar2(30));&lt;br /&gt;
  5  /&lt;br /&gt;
&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create or replace type rec_list is table of rec;&lt;br /&gt;
  2  /&lt;br /&gt;
Type created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create or replace procedure myProcedure(p Rec_list) is&lt;br /&gt;
  2   x number;&lt;br /&gt;
  3   begin&lt;br /&gt;
  4       null;&lt;br /&gt;
  5   end;&lt;br /&gt;
  6  /&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;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&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 SYS_REFCURSOR as parameter type==&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 orders( order_number NUMBER,&lt;br /&gt;
  2                       create_date  DATE,&lt;br /&gt;
  3                       assign_date  DATE,&lt;br /&gt;
  4                       close_date   DATE);&lt;br /&gt;
&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; BEGIN&lt;br /&gt;
  2    FOR counter IN 1..3 LOOP&lt;br /&gt;
  3      INSERT INTO orders&lt;br /&gt;
  4      VALUES(counter,&lt;br /&gt;
  5             SYSDATE,&lt;br /&gt;
  6             SYSDATE + 1,&lt;br /&gt;
  7             SYSDATE + 2);&lt;br /&gt;
  8    END LOOP;&lt;br /&gt;
  9  END;&lt;br /&gt;
 10  /&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE TYPE order_date_o AS OBJECT ( order_number NUMBER,&lt;br /&gt;
  2                                                  date_type    VARCHAR2(1),&lt;br /&gt;
  3                                                  year         NUMBER,&lt;br /&gt;
  4                                                  quarter      NUMBER,&lt;br /&gt;
  5                                                  month        NUMBER );&lt;br /&gt;
  6  /&lt;br /&gt;
SQL&amp;gt; CREATE TYPE order_date_t AS TABLE OF order_date_o;&lt;br /&gt;
  2  /&lt;br /&gt;
&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE FUNCTION date_parse ( p_curs SYS_REFCURSOR )&lt;br /&gt;
  2                    RETURN order_date_t AS&lt;br /&gt;
  3    v_order_rec orders%ROWTYPE;&lt;br /&gt;
  4    v_ret_val order_date_t := order_date_t( );&lt;br /&gt;
  5&lt;br /&gt;
  6  BEGIN&lt;br /&gt;
  7    LOOP&lt;br /&gt;
  8&lt;br /&gt;
  9      FETCH p_curs INTO v_order_rec;&lt;br /&gt;
 10      EXIT WHEN p_curs%NOTFOUND;&lt;br /&gt;
 11      v_ret_val.EXTEND(3);&lt;br /&gt;
 12      v_ret_val(v_ret_val.LAST - 2) := order_date_o(v_order_rec.order_number,&amp;quot;O&amp;quot;,&lt;br /&gt;
 13                                                    TO_CHAR(v_order_rec.create_date,&amp;quot;YYYY&amp;quot;),&lt;br /&gt;
 14                                                    TO_CHAR(v_order_rec.create_date,&amp;quot;Q&amp;quot;),&lt;br /&gt;
 15                                                    TO_CHAR(v_order_rec.create_date,&amp;quot;MM&amp;quot;));&lt;br /&gt;
 16      v_ret_val(v_ret_val.LAST - 1) := order_date_o(v_order_rec.order_number,&amp;quot;A&amp;quot;,&lt;br /&gt;
 17                                                    TO_CHAR(v_order_rec.assign_date,&amp;quot;YYYY&amp;quot;),&lt;br /&gt;
 18                                                    TO_CHAR(v_order_rec.assign_date,&amp;quot;Q&amp;quot;),&lt;br /&gt;
 19                                                    TO_CHAR(v_order_rec.assign_date,&amp;quot;MM&amp;quot;));&lt;br /&gt;
 20      v_ret_val(v_ret_val.LAST) := order_date_o(v_order_rec.order_number,&amp;quot;C&amp;quot;,&lt;br /&gt;
 21                                                TO_CHAR(v_order_rec.close_date,&amp;quot;YYYY&amp;quot;),&lt;br /&gt;
 22                                                TO_CHAR(v_order_rec.close_date,&amp;quot;Q&amp;quot;),&lt;br /&gt;
 23                                                TO_CHAR(v_order_rec.close_date,&amp;quot;MM&amp;quot;));&lt;br /&gt;
 24    END LOOP;&lt;br /&gt;
 25&lt;br /&gt;
 26    RETURN(v_ret_val);&lt;br /&gt;
 27&lt;br /&gt;
 28  END;&lt;br /&gt;
 29  /&lt;br /&gt;
Function created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; SELECT *&lt;br /&gt;
  2    FROM TABLE(date_PARSE(CURSOR(SELECT * FROM orders)))&lt;br /&gt;
  3  /&lt;br /&gt;
ORDER_NUMBER D       YEAR    QUARTER      MONTH&lt;br /&gt;
------------ - ---------- ---------- ----------&lt;br /&gt;
           1 O       2008          2          6&lt;br /&gt;
           1 A       2008          2          6&lt;br /&gt;
           1 C       2008          2          6&lt;br /&gt;
           2 O       2008          2          6&lt;br /&gt;
           2 A       2008          2          6&lt;br /&gt;
           2 C       2008          2          6&lt;br /&gt;
           3 O       2008          2          6&lt;br /&gt;
           3 A       2008          2          6&lt;br /&gt;
           3 C       2008          2          6&lt;br /&gt;
           1 O       2008          2          6&lt;br /&gt;
           1 A       2008          2          6&lt;br /&gt;
           1 C       2008          2          6&lt;br /&gt;
           2 O       2008          2          6&lt;br /&gt;
           2 A       2008          2          6&lt;br /&gt;
           2 C       2008          2          6&lt;br /&gt;
           3 O       2008          2          6&lt;br /&gt;
           3 A       2008          2          6&lt;br /&gt;
           3 C       2008          2          6&lt;br /&gt;
18 rows selected.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Wrong way to reference parameters==&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 t(&lt;br /&gt;
  2      n number,&lt;br /&gt;
  3      parm varchar2(20)&lt;br /&gt;
  4    )&lt;br /&gt;
  5    /&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;  create or replace&lt;br /&gt;
  2    procedure insert_into_t(&lt;br /&gt;
  3      p_parm1 in number,&lt;br /&gt;
  4      p_parm2 in number ) is&lt;br /&gt;
  5    begin&lt;br /&gt;
  6      insert into t values ( p_parm1, &amp;quot;p_parm1&amp;quot; );&lt;br /&gt;
  7      insert into t values ( p_parm2, &amp;quot;p_parm2&amp;quot; );&lt;br /&gt;
  8    end insert_into_t;&lt;br /&gt;
  9    /&lt;br /&gt;
Procedure created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; begin&lt;br /&gt;
  2     insert_into_t(1,2);&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 t;&lt;br /&gt;
         N PARM&lt;br /&gt;
---------- --------------------&lt;br /&gt;
         1 p_parm1&lt;br /&gt;
         2 p_parm2&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table t;&lt;br /&gt;
Table dropped.&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>