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

	<entry>
		<id>http://sqle.ru/index.php?title=Oracle_PL/SQL_Tutorial/Function_Procedure_Packages/Overloading&amp;diff=4426&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/Overloading&amp;diff=4426&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/Overloading&amp;diff=4427&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/Overloading&amp;diff=4427&amp;oldid=prev"/>
				<updated>2010-05-26T10:11:56Z</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;== Datatype family of parameters==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Datatype families are groups of similar datatypes.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;For example, CHAR and VARCHAR2 are used to describe exactly the same kind of textual data, so they belong to the same family.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;You can overload only between different families.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The following code is an example of declaring a different datatype family:&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; declare&lt;br /&gt;
  2    function getArea(i_rad NUMBER, i_prec NUMBER) return NUMBER is&lt;br /&gt;
  3        v_pi NUMBER:=3.14;&lt;br /&gt;
  4    begin&lt;br /&gt;
  5       return trunc(v_pi * (i_rad ** 2),i_prec);&lt;br /&gt;
  6    end;&lt;br /&gt;
  7    function getArea(i_rad NUMBER, i_ignore_yn VARCHAR2) return NUMBER is&lt;br /&gt;
  8        v_pi NUMBER:=3.14;&lt;br /&gt;
  9    begin&lt;br /&gt;
 10       if i_ignore_yn=&amp;quot;Y&amp;quot; and i_rad &amp;lt; 5 then&lt;br /&gt;
 11         return 0;&lt;br /&gt;
 12       else&lt;br /&gt;
 13         return v_pi * (i_rad ** 2);&lt;br /&gt;
 14       end if;&lt;br /&gt;
 15    end;&lt;br /&gt;
 16  begin&lt;br /&gt;
 17    DBMS_OUTPUT.put_line(&amp;quot;Area (R=3):&amp;quot;||getArea(3,1));&lt;br /&gt;
 18    DBMS_OUTPUT.put_line(&amp;quot;Area (R=3):&amp;quot;||getArea(3,&amp;quot;N&amp;quot;));&lt;br /&gt;
 19  end;&lt;br /&gt;
 20  /&lt;br /&gt;
Area (R=3):28.2&lt;br /&gt;
Area (R=3):28.26&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;
== More than one match was found so Oracle raised a special error.==&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; declare&lt;br /&gt;
  2      function getArea(i_rad NUMBER) return NUMBER&lt;br /&gt;
  3      is&lt;br /&gt;
  4          v_pi NUMBER:=3.14;&lt;br /&gt;
  5      begin&lt;br /&gt;
  6         return v_pi * (i_rad ** 2);&lt;br /&gt;
  7      end;&lt;br /&gt;
  8      function getArea(i_length NUMBER, i_width NUMBER:=3) return NUMBER&lt;br /&gt;
  9      is&lt;br /&gt;
 10      begin&lt;br /&gt;
 11         return i_length * i_width;&lt;br /&gt;
 12      end;&lt;br /&gt;
 13  begin&lt;br /&gt;
 14     DBMS_OUTPUT.put_line(&amp;quot;Area (R=3):&amp;quot;||getArea(3));&lt;br /&gt;
 15  end;&lt;br /&gt;
 16  /&lt;br /&gt;
   DBMS_OUTPUT.put_line(&amp;quot;Area (R=3):&amp;quot;||getArea(3));&lt;br /&gt;
                                       *&lt;br /&gt;
ERROR at line 14:&lt;br /&gt;
ORA-06550: line 14, column 40:&lt;br /&gt;
PLS-00307: too many declarations of &amp;quot;GETAREA&amp;quot; match this call&lt;br /&gt;
ORA-06550: line 14, column 4:&lt;br /&gt;
PL/SQL: Statement ignored&lt;br /&gt;
&lt;br /&gt;
SQL&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Names of parameters==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;You can overload program units by using different names of parameters as long as you use named notation when you call the program units.&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;&lt;br /&gt;
SQL&amp;gt; declare&lt;br /&gt;
  2      function getArea(i_rad NUMBER, i_prec NUMBER)&lt;br /&gt;
  3         return NUMBER&lt;br /&gt;
  4      is&lt;br /&gt;
  5          v_pi NUMBER:=3.14;&lt;br /&gt;
  6      begin&lt;br /&gt;
  7         return trunc(v_pi * (i_rad ** 2),i_prec);&lt;br /&gt;
  8      end;&lt;br /&gt;
  9      function getArea(i_length NUMBER, i_width NUMBER)&lt;br /&gt;
 10         return NUMBER&lt;br /&gt;
 11      is&lt;br /&gt;
 12      begin&lt;br /&gt;
 13         return i_length * i_width;&lt;br /&gt;
 14      end;&lt;br /&gt;
 15  begin&lt;br /&gt;
 16     DBMS_OUTPUT.put_line(&amp;quot;Area (R=3): &amp;quot;||getArea(i_rad=&amp;gt;3,i_prec=&amp;gt;1));&lt;br /&gt;
 17     DBMS_OUTPUT.put_line(&amp;quot;Area (2x3): &amp;quot;||getArea(i_length=&amp;gt;2,i_width=&amp;gt;3));&lt;br /&gt;
 18  end;&lt;br /&gt;
 19  /&lt;br /&gt;
Area (R=3): 28.2&lt;br /&gt;
Area (2x3): 6&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;
== Number of 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;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; declare&lt;br /&gt;
  2      function getArea(i_rad NUMBER)&lt;br /&gt;
  3         return NUMBER&lt;br /&gt;
  4      is&lt;br /&gt;
  5          v_pi NUMBER:=3.14;&lt;br /&gt;
  6      begin&lt;br /&gt;
  7         return v_pi * (i_rad ** 2);&lt;br /&gt;
  8      end;&lt;br /&gt;
  9      function getArea(i_length NUMBER, i_width NUMBER)&lt;br /&gt;
 10         return NUMBER&lt;br /&gt;
 11      is&lt;br /&gt;
 12      begin&lt;br /&gt;
 13         return i_length * i_width;&lt;br /&gt;
 14      end;&lt;br /&gt;
 15  begin&lt;br /&gt;
 16     DBMS_OUTPUT.put_line(&amp;quot;Area (R=3):&amp;quot;||getArea(3));&lt;br /&gt;
 17     DBMS_OUTPUT.put_line(&amp;quot;Area (2x3):&amp;quot;||getArea(2,3));&lt;br /&gt;
 18  end;&lt;br /&gt;
 19  /&lt;br /&gt;
Area (R=3):28.26&lt;br /&gt;
Area (2x3):6&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;
== Overloading calls==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;You can declare local or packaged stored procedures with exactly the same name, as long as their parameters are different by at least one of these factors:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;OL&amp;gt;&amp;lt;LI&amp;gt;the number of parameters,&amp;lt;/LI&amp;gt;&amp;lt;LI&amp;gt;names of parameters,&amp;lt;/LI&amp;gt;&amp;lt;LI&amp;gt;order of parameters, or&amp;lt;/LI&amp;gt;&amp;lt;LI&amp;gt;the datatype family of the parameters.&amp;lt;/LI&amp;gt;&amp;lt;/OL&amp;gt;&lt;br /&gt;
27. 19. Overloading&lt;br /&gt;
27. 19. 1. &lt;br /&gt;
Overloading calls&lt;br /&gt;
27. 19. 2. &lt;br /&gt;
&amp;lt;A href=&amp;quot;/Tutorial/Oracle/0540__Function-Procedure-Packages/Numberofparameters.htm&amp;quot;&amp;gt;Number of parameters&amp;lt;/a&amp;gt;&lt;br /&gt;
27. 19. 3. &lt;br /&gt;
&amp;lt;A href=&amp;quot;/Tutorial/Oracle/0540__Function-Procedure-Packages/Namesofparameters.htm&amp;quot;&amp;gt;Names of parameters&amp;lt;/a&amp;gt;&lt;br /&gt;
27. 19. 4. &lt;br /&gt;
&amp;lt;A href=&amp;quot;/Tutorial/Oracle/0540__Function-Procedure-Packages/Datatypefamilyofparameters.htm&amp;quot;&amp;gt;Datatype family of parameters&amp;lt;/a&amp;gt;&lt;br /&gt;
27. 19. 5. &lt;br /&gt;
&amp;lt;A href=&amp;quot;/Tutorial/Oracle/0540__Function-Procedure-Packages/Therearesomerestrictionsonoverloading.htm&amp;quot;&amp;gt;There are some restrictions on overloading:&amp;lt;/a&amp;gt;&lt;br /&gt;
27. 19. 6. &lt;br /&gt;
&amp;lt;A href=&amp;quot;/Tutorial/Oracle/0540__Function-Procedure-Packages/MorethanonematchwasfoundsoOracleraisedaspecialerror.htm&amp;quot;&amp;gt;More than one match was found so Oracle raised a special error.&amp;lt;/a&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== There are some restrictions on overloading:==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;You can&amp;quot;t overload standalone procedures or functions.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The second definition simply overwrites the first one.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;You can&amp;quot;t overload functions that differ only by the datatype of the return value.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;If you need to implement this requirement, use overloaded procedures with OUT parameters.&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; declare&lt;br /&gt;
  2     function getArea(i_rad NUMBER) return NUMBER&lt;br /&gt;
  3      is&lt;br /&gt;
  4          v_pi NUMBER:=3.14;&lt;br /&gt;
  5      begin&lt;br /&gt;
  6         return v_pi * (i_rad ** 2);&lt;br /&gt;
  7      end;&lt;br /&gt;
  8      function getArea (i_length NUMBER, i_width NUMBER) return NUMBER&lt;br /&gt;
  9      is&lt;br /&gt;
 10      begin&lt;br /&gt;
 11         return i_length * i_width;&lt;br /&gt;
 12      end;&lt;br /&gt;
 13  begin&lt;br /&gt;
 14     DBMS_OUTPUT.put_line(&amp;quot;Area (R=3): &amp;quot; ||getArea(3));&lt;br /&gt;
 15     DBMS_OUTPUT.put_line(&amp;quot;Area (R=3): &amp;quot; ||getArea(&amp;quot;3&amp;quot;));&lt;br /&gt;
 16  end;&lt;br /&gt;
 17  /&lt;br /&gt;
Area (R=3): 28.26&lt;br /&gt;
Area (R=3): 28.26&lt;br /&gt;
PL/SQL procedure successfully completed.&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>