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

	<entry>
		<id>http://www.sqle.ru/index.php?title=Oracle_PL/SQL_Tutorial/Function_Procedure_Packages/Out_Parameters&amp;diff=4422&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_Tutorial/Function_Procedure_Packages/Out_Parameters&amp;diff=4422&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://www.sqle.ru/index.php?title=Oracle_PL/SQL_Tutorial/Function_Procedure_Packages/Out_Parameters&amp;diff=4423&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_Tutorial/Function_Procedure_Packages/Out_Parameters&amp;diff=4423&amp;oldid=prev"/>
				<updated>2010-05-26T10:11:55Z</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;== Calling myProc==&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;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE PROCEDURE myProc(ip_line_length IN NUMBER,ip_separator IN VARCHAR2,op_line OUT VARCHAR2)&lt;br /&gt;
  2  IS&lt;br /&gt;
  3    myString VARCHAR2(150);&lt;br /&gt;
  4  BEGIN&lt;br /&gt;
  5&lt;br /&gt;
  6    FOR idx in 1..ip_line_length LOOP&lt;br /&gt;
  7&lt;br /&gt;
  8      myString :=myString ||ip_separator;&lt;br /&gt;
  9&lt;br /&gt;
 10    END LOOP;&lt;br /&gt;
 11&lt;br /&gt;
 12    op_line :=myString;&lt;br /&gt;
 13&lt;br /&gt;
 14  EXCEPTION WHEN OTHERS THEN&lt;br /&gt;
 15&lt;br /&gt;
 16    dbms_output.put_line(SQLERRM);&lt;br /&gt;
 17&lt;br /&gt;
 18    op_line :=null;&lt;br /&gt;
 19  END;&lt;br /&gt;
 20  /&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_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    v_line VARCHAR2(150);&lt;br /&gt;
  7  BEGIN&lt;br /&gt;
  8&lt;br /&gt;
  9    myProc(v_length,v_separator,v_line);&lt;br /&gt;
 10&lt;br /&gt;
 11    dbms_output.put_line(v_line);&lt;br /&gt;
 12  END;&lt;br /&gt;
 13  /&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== IN OUT difference==&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 package PARAMETERS as&lt;br /&gt;
  2  FUNCTION in_out_inout(&lt;br /&gt;
  3  aiv_in                         in     varchar2,&lt;br /&gt;
  4  aov_out                           out varchar2,&lt;br /&gt;
  5  aiov_inout                     in out varchar2)&lt;br /&gt;
  6  return                                varchar2;&lt;br /&gt;
  7  PROCEDURE in_out_inout(&lt;br /&gt;
  8  aiv_in                         in     varchar2,&lt;br /&gt;
  9  aov_out                           out varchar2,&lt;br /&gt;
 10  aiov_inout                     in out varchar2);&lt;br /&gt;
 11  end PARAMETERS;&lt;br /&gt;
 12  /&lt;br /&gt;
Package created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create or replace package body PARAMETERS as&lt;br /&gt;
  2  FUNCTION in_out_inout(&lt;br /&gt;
  3  aiv_in                         in     varchar2,&lt;br /&gt;
  4  aov_out                           out varchar2,&lt;br /&gt;
  5  aiov_inout                     in out varchar2)&lt;br /&gt;
  6  return                                varchar2 is&lt;br /&gt;
  7  begin&lt;br /&gt;
  8&lt;br /&gt;
  9    dbms_output.put_line(aiv_in);&lt;br /&gt;
 10    dbms_output.put_line(aov_out);&lt;br /&gt;
 11    dbms_output.put_line(aiov_inout);&lt;br /&gt;
 12    aov_out   := &amp;quot;OUT&amp;quot;;&lt;br /&gt;
 13    aiov_inout := aiv_in;&lt;br /&gt;
 14    aiov_inout := aiov_inout||&amp;quot;OUT&amp;quot;;&lt;br /&gt;
 15&lt;br /&gt;
 16    dbms_output.put_line(aiv_in);&lt;br /&gt;
 17    dbms_output.put_line(aov_out);&lt;br /&gt;
 18    dbms_output.put_line(aiov_inout);&lt;br /&gt;
 19    return &amp;quot;OK&amp;quot;;&lt;br /&gt;
 20&lt;br /&gt;
 21  end in_out_inout;&lt;br /&gt;
 22&lt;br /&gt;
 23&lt;br /&gt;
 24  PROCEDURE in_out_inout(&lt;br /&gt;
 25  aiv_in                         in     varchar2,&lt;br /&gt;
 26  aov_out                           out varchar2,&lt;br /&gt;
 27  aiov_inout                     in out varchar2) is&lt;br /&gt;
 28  begin&lt;br /&gt;
 29&lt;br /&gt;
 30    dbms_output.put_line(aiv_in);&lt;br /&gt;
 31    dbms_output.put_line(aov_out);&lt;br /&gt;
 32    dbms_output.put_line(aiov_inout);&lt;br /&gt;
 33    aov_out   := &amp;quot;OUT&amp;quot;;&lt;br /&gt;
 34    aiov_inout := aiv_in;&lt;br /&gt;
 35    aiov_inout := aiov_inout||&amp;quot;OUT&amp;quot;;&lt;br /&gt;
 36&lt;br /&gt;
 37    dbms_output.put_line(aiv_in);&lt;br /&gt;
 38    dbms_output.put_line(aov_out);&lt;br /&gt;
 39    dbms_output.put_line(aiov_inout);&lt;br /&gt;
 40  end in_out_inout;&lt;br /&gt;
 41  end PARAMETERS;&lt;br /&gt;
 42  /&lt;br /&gt;
Package body 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_in                         varchar2(30) := &amp;quot;IN&amp;quot;;&lt;br /&gt;
  3      v_out                        varchar2(30) := &amp;quot;AAA&amp;quot;;&lt;br /&gt;
  4      v_inout                      varchar2(30) := &amp;quot;BBB&amp;quot;;&lt;br /&gt;
  5      v_return                     varchar2(30);&lt;br /&gt;
  6  begin&lt;br /&gt;
  7&lt;br /&gt;
  8    dbms_output.put_line(&amp;quot;Inside test unit parameters v_in    = &amp;quot;||v_in);&lt;br /&gt;
  9    dbms_output.put_line(&amp;quot;Inside test unit parameters v_out   = &amp;quot;||v_out);&lt;br /&gt;
 10    dbms_output.put_line(&amp;quot;Inside test unit parameters v_inout = &amp;quot;||v_inout);&lt;br /&gt;
 11    dbms_output.put_line(&amp;quot;Test function PARAMETERS.in_out_inout(v_in, v_out, v_inout).&amp;quot;);&lt;br /&gt;
 12&lt;br /&gt;
 13    v_return := PARAMETERS.in_out_inout(v_in, v_out, v_inout);&lt;br /&gt;
 14&lt;br /&gt;
 15    dbms_output.put_line(v_return);&lt;br /&gt;
 16    dbms_output.put_line(&amp;quot;Inside test unit parameters v_in    = &amp;quot;||v_in);&lt;br /&gt;
 17    dbms_output.put_line(&amp;quot;Inside test unit parameters v_out   = &amp;quot;||v_out);&lt;br /&gt;
 18    dbms_output.put_line(&amp;quot;Inside test unit parameters v_inout = &amp;quot;||v_inout);&lt;br /&gt;
 19    dbms_output.put_line(&amp;quot;Resetting initial values...&amp;quot;);&lt;br /&gt;
 20&lt;br /&gt;
 21    v_out   := &amp;quot;AAA&amp;quot;;&lt;br /&gt;
 22    v_inout := &amp;quot;BBB&amp;quot;;&lt;br /&gt;
 23&lt;br /&gt;
 24    dbms_output.put_line(&amp;quot;Before calling the procedure...&amp;quot;);&lt;br /&gt;
 25    dbms_output.put_line(&amp;quot;Inside test unit parameters v_in    = &amp;quot;||v_in);&lt;br /&gt;
 26    dbms_output.put_line(&amp;quot;Inside test unit parameters v_out   = &amp;quot;||v_out);&lt;br /&gt;
 27    dbms_output.put_line(&amp;quot;Inside test unit parameters v_inout = &amp;quot;||v_inout);&lt;br /&gt;
 28    dbms_output.put_line(&amp;quot;Test procedure PARAMETERS.in_out_inout(v_in, v_out, v_inout).&amp;quot;);&lt;br /&gt;
 29&lt;br /&gt;
 30    PARAMETERS.in_out_inout(v_in, v_out, v_inout);&lt;br /&gt;
 31&lt;br /&gt;
 32    dbms_output.put_line(&amp;quot;Inside test unit parameters v_in    = &amp;quot;||v_in);&lt;br /&gt;
 33    dbms_output.put_line(&amp;quot;Inside test unit parameters v_out   = &amp;quot;||v_out);&lt;br /&gt;
 34    dbms_output.put_line(&amp;quot;Inside test unit parameters v_inout = &amp;quot;||v_inout);&lt;br /&gt;
 35  end;&lt;br /&gt;
 36  /&lt;br /&gt;
Inside test unit parameters v_in    = IN&lt;br /&gt;
Inside test unit parameters v_out   = AAA&lt;br /&gt;
Inside test unit parameters v_inout = BBB&lt;br /&gt;
Test function PARAMETERS.in_out_inout(v_in, v_out, v_inout).&lt;br /&gt;
IN&lt;br /&gt;
BBB&lt;br /&gt;
IN&lt;br /&gt;
OUT&lt;br /&gt;
INOUT&lt;br /&gt;
OK&lt;br /&gt;
Inside test unit parameters v_in    = IN&lt;br /&gt;
Inside test unit parameters v_out   = OUT&lt;br /&gt;
Inside test unit parameters v_inout = INOUT&lt;br /&gt;
Resetting initial values...&lt;br /&gt;
Before calling the procedure...&lt;br /&gt;
Inside test unit parameters v_in    = IN&lt;br /&gt;
Inside test unit parameters v_out   = AAA&lt;br /&gt;
Inside test unit parameters v_inout = BBB&lt;br /&gt;
Test procedure PARAMETERS.in_out_inout(v_in, v_out, v_inout).&lt;br /&gt;
IN&lt;br /&gt;
BBB&lt;br /&gt;
IN&lt;br /&gt;
OUT&lt;br /&gt;
INOUT&lt;br /&gt;
Inside test unit parameters v_in    = IN&lt;br /&gt;
Inside test unit parameters v_out   = OUT&lt;br /&gt;
Inside test unit parameters v_inout = INOUT&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;
== Out 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; CREATE  PROCEDURE changePrice (old_price NUMBER,percent_update NUMBER := 5,new_price OUT NUMBER)&lt;br /&gt;
  2  IS&lt;br /&gt;
  3  BEGIN&lt;br /&gt;
  4          new_price := old_price + old_price * percent_update / 100;&lt;br /&gt;
  5  END changePrice;&lt;br /&gt;
  6  /&lt;br /&gt;
Procedure created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; set serveroutput on&lt;br /&gt;
SQL&amp;gt; DECLARE&lt;br /&gt;
  2          price_to_update NUMBER(6,2) := 20;&lt;br /&gt;
  3          updated_price NUMBER(6,2) := 0;&lt;br /&gt;
  4  BEGIN&lt;br /&gt;
  5          dbms_output.put_line(&amp;quot;price before &amp;quot; || price_to_update);&lt;br /&gt;
  6          dbms_output.put_line(&amp;quot;updated_price before &amp;quot; || updated_price);&lt;br /&gt;
  7          changePrice (old_price =&amp;gt; price_to_update, new_price =&amp;gt; updated_price);&lt;br /&gt;
  8          dbms_output.put_line(&amp;quot;price_to_update after update &amp;quot; || price_to_update);&lt;br /&gt;
  9          dbms_output.put_line(&amp;quot;updated_price after update &amp;quot; || updated_price);&lt;br /&gt;
 10  END;&lt;br /&gt;
 11  /&lt;br /&gt;
price before 20&lt;br /&gt;
updated_price before 0&lt;br /&gt;
price_to_update after update 20&lt;br /&gt;
updated_price after update 21&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;
== OUT Parameters==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;An OUT parameter returns a value to the main program.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;An OUT parameter allows you to return more than one variable from the subprogram.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The actual parameter is a variable.&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 procedure p_split (i_date_dt DATE,o_hour OUT NUMBER, o_min OUT NUMBER)&lt;br /&gt;
  2  is&lt;br /&gt;
  3  begin&lt;br /&gt;
  4      DBMS_OUTPUT.put_line(o_hour||&amp;quot;/&amp;quot;||o_min);&lt;br /&gt;
  5      o_hour:= to_NUMBER(to_char(i_date_dt,&amp;quot;hh24&amp;quot;));&lt;br /&gt;
  6      o_min := TO_CHAR(i_date_dt,&amp;quot;mi&amp;quot;);&lt;br /&gt;
  7      DBMS_OUTPUT.put_line(o_hour||&amp;quot;/&amp;quot;||o_min);&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; declare&lt;br /&gt;
  2    v_hour NUMBER:=12;&lt;br /&gt;
  3    v_min  NUMBER:=20;&lt;br /&gt;
  4  begin&lt;br /&gt;
  5      p_split(sysdate, v_hour, v_min);&lt;br /&gt;
  6      DBMS_OUTPUT.put_line (&amp;quot;Total minutes:&amp;quot;||(v_hour*60+v_min));&lt;br /&gt;
  7  end;&lt;br /&gt;
  8  /&lt;br /&gt;
/&lt;br /&gt;
21/27&lt;br /&gt;
Total minutes:1287&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>