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

	<entry>
		<id>http://sqle.ru/index.php?title=Oracle_PL/SQL/Stored_Procedure_Function/NOCOPY&amp;diff=2106&amp;oldid=prev</id>
		<title> в 13:45, 26 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://sqle.ru/index.php?title=Oracle_PL/SQL/Stored_Procedure_Function/NOCOPY&amp;diff=2106&amp;oldid=prev"/>
				<updated>2010-05-26T13:45:19Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 13:45, 26 мая 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
			</entry>

	<entry>
		<id>http://sqle.ru/index.php?title=Oracle_PL/SQL/Stored_Procedure_Function/NOCOPY&amp;diff=2107&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://sqle.ru/index.php?title=Oracle_PL/SQL/Stored_Procedure_Function/NOCOPY&amp;diff=2107&amp;oldid=prev"/>
				<updated>2010-05-26T10:00:57Z</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;==Possible speed benefits of NOCOPY==&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 book (&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; INSERT INTO book (isbn, category, title, num_pages, price, copyright, emp1, emp2, emp3)&lt;br /&gt;
  2              VALUES (&amp;quot;1&amp;quot;, &amp;quot;Database&amp;quot;, &amp;quot;Oracle&amp;quot;, 563,.99,99, 1, 2, 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; INSERT INTO book (isbn, category, title, num_pages, price, copyright, emp1, emp2)&lt;br /&gt;
  2              VALUES (&amp;quot;2&amp;quot;, &amp;quot;Database&amp;quot;, &amp;quot;MySQL&amp;quot;, 765,.99,99, 4, 5);&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; INSERT INTO book (isbn, category, title, num_pages, price, copyright, emp1, emp2, emp3)&lt;br /&gt;
  2              VALUES (&amp;quot;3&amp;quot;, &amp;quot;Database&amp;quot;, &amp;quot;SQL Server&amp;quot;,4,.99,01, 6, 7, 8);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE PACKAGE CopyFast AS&lt;br /&gt;
  2     TYPE BookArray IS TABLE OF book%ROWTYPE;&lt;br /&gt;
  3&lt;br /&gt;
  4     PROCEDURE Passbook1(p IN BookArray);&lt;br /&gt;
  5     PROCEDURE Passbook2(p IN OUT BookArray);&lt;br /&gt;
  6     PROCEDURE Passbook3(p IN OUT NOCOPY BookArray);&lt;br /&gt;
  7&lt;br /&gt;
  8     PROCEDURE Go;&lt;br /&gt;
  9   END CopyFast;&lt;br /&gt;
 10   /&lt;br /&gt;
Package 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; CREATE OR REPLACE PACKAGE BODY CopyFast AS&lt;br /&gt;
  2     PROCEDURE Passbook1(p IN BookArray) IS&lt;br /&gt;
  3     BEGIN&lt;br /&gt;
  4       NULL;&lt;br /&gt;
  5     END Passbook1;&lt;br /&gt;
  6&lt;br /&gt;
  7     PROCEDURE Passbook2(p IN OUT BookArray) IS&lt;br /&gt;
  8     BEGIN&lt;br /&gt;
  9       NULL;&lt;br /&gt;
 10     END Passbook2;&lt;br /&gt;
 11&lt;br /&gt;
 12     PROCEDURE Passbook3(p IN OUT NOCOPY BookArray) IS&lt;br /&gt;
 13     BEGIN&lt;br /&gt;
 14        NULL;&lt;br /&gt;
 15     END Passbook3;&lt;br /&gt;
 16&lt;br /&gt;
 17     PROCEDURE Go IS&lt;br /&gt;
 18       v_BookArray BookArray := BookArray(NULL);&lt;br /&gt;
 19       v_Time1 NUMBER;&lt;br /&gt;
 20       v_Time2 NUMBER;&lt;br /&gt;
 21&lt;br /&gt;
 22      BEGIN&lt;br /&gt;
 23       &lt;br /&gt;
 24        SELECT * INTO v_BookArray(1) FROM book WHERE ISBN = &amp;quot;3&amp;quot;;&lt;br /&gt;
 25       v_BookArray.EXTEND(50000, 1);&lt;br /&gt;
 26&lt;br /&gt;
 27       v_Time1 := DBMS_UTILITY.GET_TIME;&lt;br /&gt;
 28       Passbook1(v_BookArray);&lt;br /&gt;
 29       v_Time2 := DBMS_UTILITY.GET_TIME;&lt;br /&gt;
 30       Passbook2(v_BookArray);&lt;br /&gt;
 31&lt;br /&gt;
 32       &lt;br /&gt;
 33       DBMS_OUTPUT.PUT_LINE(&amp;quot;Time to pass IN: &amp;quot; || TO_CHAR((v_Time2 - v_Time1) /0));&lt;br /&gt;
 34     END Go;&lt;br /&gt;
 35   END CopyFast;&lt;br /&gt;
 36    /&lt;br /&gt;
Package body created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; show errors&lt;br /&gt;
No errors.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; BEGIN&lt;br /&gt;
  2     CopyFast.Go();&lt;br /&gt;
  3   END;&lt;br /&gt;
  4   /&lt;br /&gt;
BEGIN&lt;br /&gt;
*&lt;br /&gt;
ERROR at line 1:&lt;br /&gt;
ORA-01476: divisor is equal to zero&lt;br /&gt;
ORA-06512: at &amp;quot;sqle.COPYFAST&amp;quot;, line 33&lt;br /&gt;
ORA-06512: at line 2&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; drop table book;&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;
   &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;
==The behavior of NOCOPY.==&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(p_In IN NUMBER,p_Out OUT NOCOPY VARCHAR2,p_InOut IN OUT NOCOPY CHAR) IS&lt;br /&gt;
  2   BEGIN&lt;br /&gt;
  3     NULL;&lt;br /&gt;
  4   END NoCopyTest;&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; -- A modified version of RaiseError, with the out parameter specified as NOCOPY.&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE PROCEDURE RaiseErrorNoCopy(p_Raise IN BOOLEAN,pA OUT NOCOPY NUMBER) AS&lt;br /&gt;
  2   BEGIN&lt;br /&gt;
  3     pA := 5;&lt;br /&gt;
  4     IF p_Raise THEN&lt;br /&gt;
  5       RAISE DUP_VAL_ON_INDEX;&lt;br /&gt;
  6     ELSE&lt;br /&gt;
  7       RETURN;&lt;br /&gt;
  8     END IF;&lt;br /&gt;
  9   END RaiseErrorNoCopy;&lt;br /&gt;
 10   /&lt;br /&gt;
Procedure created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; show errors&lt;br /&gt;
No errors.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; -- When we call RaiseErrorNoCopy the exception semantics are changed due to NOCOPY.&lt;br /&gt;
SQL&amp;gt; DECLARE&lt;br /&gt;
  2     v_Num NUMBER := 1;&lt;br /&gt;
  3   BEGIN&lt;br /&gt;
  4     DBMS_OUTPUT.PUT_LINE(&amp;quot;Value before first call: &amp;quot; || v_Num);&lt;br /&gt;
  5     RaiseErrorNoCopy(FALSE, v_Num);&lt;br /&gt;
  6     DBMS_OUTPUT.PUT_LINE(&amp;quot;Value after successful call: &amp;quot; || v_Num);&lt;br /&gt;
  7     DBMS_OUTPUT.PUT_LINE(&amp;quot;&amp;quot;);&lt;br /&gt;
  8&lt;br /&gt;
  9     v_Num := 2;&lt;br /&gt;
 10     DBMS_OUTPUT.PUT_LINE(&amp;quot;Value before second call: &amp;quot; || v_Num);&lt;br /&gt;
 11     RaiseErrorNoCopy(TRUE, v_Num);&lt;br /&gt;
 12   EXCEPTION&lt;br /&gt;
 13     WHEN OTHERS THEN&lt;br /&gt;
 14        DBMS_OUTPUT.PUT_LINE(&amp;quot;Value after unsuccessful call: &amp;quot; || v_Num);&lt;br /&gt;
 15   END;&lt;br /&gt;
 16   /&lt;br /&gt;
Value before first call: 1&lt;br /&gt;
Value after successful call: 5&lt;br /&gt;
Value before second call: 2&lt;br /&gt;
Value after unsuccessful call: 5&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;&lt;br /&gt;
   &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>