<?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%2FPL_SQL_Statements%2FNested_Block</id>
		<title>Oracle PL/SQL Tutorial/PL SQL Statements/Nested Block - История изменений</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%2FPL_SQL_Statements%2FNested_Block"/>
		<link rel="alternate" type="text/html" href="http://www.sqle.ru/index.php?title=Oracle_PL/SQL_Tutorial/PL_SQL_Statements/Nested_Block&amp;action=history"/>
		<updated>2026-05-24T05:40:17Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://www.sqle.ru/index.php?title=Oracle_PL/SQL_Tutorial/PL_SQL_Statements/Nested_Block&amp;diff=3198&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/PL_SQL_Statements/Nested_Block&amp;diff=3198&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/PL_SQL_Statements/Nested_Block&amp;diff=3199&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/PL_SQL_Statements/Nested_Block&amp;diff=3199&amp;oldid=prev"/>
				<updated>2010-05-26T10:05:41Z</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;== A nested block which declares and prints a variable of the same 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;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; set echo on&lt;br /&gt;
SQL&amp;gt; set serveroutput on&lt;br /&gt;
SQL&amp;gt; declare&lt;br /&gt;
  2    state_name  varchar2(30);&lt;br /&gt;
  3&lt;br /&gt;
  4  begin&lt;br /&gt;
  5    state_name := &amp;quot;A&amp;quot;;&lt;br /&gt;
  6&lt;br /&gt;
  7    declare&lt;br /&gt;
  8      state_name  varchar2(30);&lt;br /&gt;
  9    begin&lt;br /&gt;
 10      state_name := &amp;quot;B&amp;quot;;&lt;br /&gt;
 11      dbms_output.put_line(state_name);&lt;br /&gt;
 12    end;&lt;br /&gt;
 13&lt;br /&gt;
 14    --Now print the state_name variable&amp;quot;s value in the outer block.&lt;br /&gt;
 15    dbms_output.put_line (state_name);&lt;br /&gt;
 16  end;&lt;br /&gt;
 17  /&lt;br /&gt;
B&lt;br /&gt;
A&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;
== Call function in PL/SQL==&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 letterCounter(myString VARCHAR2)&lt;br /&gt;
  2          RETURN NUMBER IS&lt;br /&gt;
  3               v_current_position INTEGER := 1;&lt;br /&gt;
  4               v_counter NUMBER := 0;&lt;br /&gt;
  5     BEGIN&lt;br /&gt;
  6          WHILE v_current_position &amp;lt;= LENGTH(myString) LOOP&lt;br /&gt;
  7               IF SUBSTR(myString,v_current_position,1) != &amp;quot; &amp;quot; THEN&lt;br /&gt;
  8                    v_counter := v_counter + 1;&lt;br /&gt;
  9               ELSE&lt;br /&gt;
 10                   NULL;&lt;br /&gt;
 11               END IF;&lt;br /&gt;
 12               v_current_position := v_current_position + 1;&lt;br /&gt;
 13         END LOOP;&lt;br /&gt;
 14         RETURN v_counter ;&lt;br /&gt;
 15    END letterCounter;&lt;br /&gt;
 16    /&lt;br /&gt;
Function created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;   DECLARE&lt;br /&gt;
  2         v_MYTEXT VARCHAR2(20) := &amp;quot;THIS IS A TEST&amp;quot;;&lt;br /&gt;
  3    BEGIN&lt;br /&gt;
  4         DBMS_OUTPUT.PUT_LINE(&amp;quot;Total count is &amp;quot; || letterCounter(v_MYTEXT));&lt;br /&gt;
  5    END;&lt;br /&gt;
  6    /&lt;br /&gt;
Total count is 11&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;
== Nested Blocks==&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; --PL/SQL blocks can be nested, one inside the other.&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    error_flag  BOOLEAN := false;&lt;br /&gt;
  3  BEGIN&lt;br /&gt;
  4    DBMS_OUTPUT.PUT_LINE(&amp;quot;We are going to count from 100 to 1000.&amp;quot;);&lt;br /&gt;
  5     DECLARE&lt;br /&gt;
  6       hundreds_counter  NUMBER(1,-2);&lt;br /&gt;
  7     BEGIN&lt;br /&gt;
  8       hundreds_counter := 100;&lt;br /&gt;
  9       LOOP&lt;br /&gt;
 10         DBMS_OUTPUT.PUT_LINE(hundreds_counter);&lt;br /&gt;
 11         hundreds_counter := hundreds_counter + 100;&lt;br /&gt;
 12         IF hundreds_counter &amp;gt; 1000 THEN&lt;br /&gt;
 13           EXIT;&lt;br /&gt;
 14         END IF;&lt;br /&gt;
 15        END LOOP;&lt;br /&gt;
 16     EXCEPTION&lt;br /&gt;
 17     WHEN OTHERS THEN&lt;br /&gt;
 18       error_flag := true;&lt;br /&gt;
 19     END;&lt;br /&gt;
 20     IF error_flag THEN&lt;br /&gt;
 21       DBMS_OUTPUT.PUT_LINE(&amp;quot;Sorry, I cannot count that high.&amp;quot;);&lt;br /&gt;
 22      ELSE&lt;br /&gt;
 23       DBMS_OUTPUT.PUT_LINE(&amp;quot;Done.&amp;quot;);&lt;br /&gt;
 24     END IF;&lt;br /&gt;
 25  END;&lt;br /&gt;
 26   /&lt;br /&gt;
We are going to count from 100 to 1000.&lt;br /&gt;
100&lt;br /&gt;
200&lt;br /&gt;
300&lt;br /&gt;
400&lt;br /&gt;
500&lt;br /&gt;
600&lt;br /&gt;
700&lt;br /&gt;
800&lt;br /&gt;
900&lt;br /&gt;
Sorry, I cannot count that high.&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;
== Nesting Functions and 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; SET ECHO ON&lt;br /&gt;
SQL&amp;gt; SET SERVEROUTPUT ON&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; DECLARE&lt;br /&gt;
  2  temp  NUMBER;&lt;br /&gt;
  3&lt;br /&gt;
  4    FUNCTION iifn(boolean_expression IN BOOLEAN,&lt;br /&gt;
  5                true_number IN NUMBER,&lt;br /&gt;
  6                false_number IN NUMBER)&lt;br /&gt;
  7    RETURN NUMBER IS&lt;br /&gt;
  8    BEGIN&lt;br /&gt;
  9      IF boolean_expression THEN&lt;br /&gt;
 10        RETURN true_number;&lt;br /&gt;
 11      ELSIF NOT boolean_expression THEN&lt;br /&gt;
 12        RETURN false_number;&lt;br /&gt;
 13      ELSE&lt;br /&gt;
 14        --nulls propagate, i.e. null input yields null output.&lt;br /&gt;
 15        RETURN NULL;&lt;br /&gt;
 16      END IF;&lt;br /&gt;
 17    END;&lt;br /&gt;
 18  BEGIN&lt;br /&gt;
 19    DBMS_OUTPUT.PUT_LINE(iifn(2 &amp;gt; 1,1,0));&lt;br /&gt;
 20    DBMS_OUTPUT.PUT_LINE(iifn(2 &amp;gt; 3,1,0));&lt;br /&gt;
 21&lt;br /&gt;
 22    temp := iifn(null,1,0);&lt;br /&gt;
 23    IF temp IS NULL THEN&lt;br /&gt;
 24      DBMS_OUTPUT.PUT_LINE(&amp;quot;NULL&amp;quot;);&lt;br /&gt;
 25    ELSE&lt;br /&gt;
 26      DBMS_OUTPUT.PUT_LINE(temp);&lt;br /&gt;
 27    END IF;&lt;br /&gt;
 28  END;&lt;br /&gt;
 29  /&lt;br /&gt;
1&lt;br /&gt;
0&lt;br /&gt;
NULL&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;
== This is an example of nested anonymous blocks==&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 ECHO ON&lt;br /&gt;
SQL&amp;gt; SET SERVEROUTPUT ON&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; DECLARE&lt;br /&gt;
  2    error_flag  BOOLEAN := false;&lt;br /&gt;
  3&lt;br /&gt;
  4  BEGIN&lt;br /&gt;
  5    DBMS_OUTPUT.PUT_LINE(&amp;quot;We are going to count from 100 to 1000.&amp;quot;);&lt;br /&gt;
  6&lt;br /&gt;
  7    DECLARE&lt;br /&gt;
  8      hundreds_counter  NUMBER(1,-2);&lt;br /&gt;
  9    BEGIN&lt;br /&gt;
 10      hundreds_counter := 100;&lt;br /&gt;
 11      LOOP&lt;br /&gt;
 12        DBMS_OUTPUT.PUT_LINE(hundreds_counter);&lt;br /&gt;
 13        hundreds_counter := hundreds_counter + 100;&lt;br /&gt;
 14        IF hundreds_counter &amp;gt; 1000 THEN&lt;br /&gt;
 15          EXIT;&lt;br /&gt;
 16        END IF;&lt;br /&gt;
 17       END LOOP;&lt;br /&gt;
 18    EXCEPTION&lt;br /&gt;
 19    WHEN OTHERS THEN&lt;br /&gt;
 20      error_flag := true;&lt;br /&gt;
 21    END;&lt;br /&gt;
 22&lt;br /&gt;
 23    IF error_flag THEN&lt;br /&gt;
 24      DBMS_OUTPUT.PUT_LINE(&amp;quot;Sorry, I cannot count that high.&amp;quot;);&lt;br /&gt;
 25     ELSE&lt;br /&gt;
 26      DBMS_OUTPUT.PUT_LINE(&amp;quot;Done.&amp;quot;);&lt;br /&gt;
 27    END IF;&lt;br /&gt;
 28  END;&lt;br /&gt;
 29  /&lt;br /&gt;
We are going to count from 100 to 1000.&lt;br /&gt;
100&lt;br /&gt;
200&lt;br /&gt;
300&lt;br /&gt;
400&lt;br /&gt;
500&lt;br /&gt;
600&lt;br /&gt;
700&lt;br /&gt;
800&lt;br /&gt;
900&lt;br /&gt;
Sorry, I cannot count that high.&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>