<?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%2FExecute_immediate</id>
		<title>Oracle PL/SQL Tutorial/PL SQL Statements/Execute immediate - История изменений</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%2FExecute_immediate"/>
		<link rel="alternate" type="text/html" href="http://www.sqle.ru/index.php?title=Oracle_PL/SQL_Tutorial/PL_SQL_Statements/Execute_immediate&amp;action=history"/>
		<updated>2026-05-24T08:51:10Z</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/Execute_immediate&amp;diff=3182&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/Execute_immediate&amp;diff=3182&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/Execute_immediate&amp;diff=3183&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/Execute_immediate&amp;diff=3183&amp;oldid=prev"/>
				<updated>2010-05-26T10:05:34Z</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;== Call EXECUTE IMMEDIATE in Pl/SQL block==&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; CREATE OR REPLACE FUNCTION value_in (varname IN VARCHAR)&lt;br /&gt;
  2     RETURN VARCHAR2&lt;br /&gt;
  3  IS&lt;br /&gt;
  4     retval VARCHAR2(2000);&lt;br /&gt;
  5  BEGIN&lt;br /&gt;
  6     EXECUTE IMMEDIATE &amp;quot;BEGIN :val := &amp;quot; || varname || &amp;quot;; END;&amp;quot; USING OUT retval;&lt;br /&gt;
  7     RETURN retval;&lt;br /&gt;
  8  END;&lt;br /&gt;
  9  /&lt;br /&gt;
Function created.&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 and get result by using &amp;quot;EXECUTE IMMEDIATE&amp;quot;==&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; CREATE OR REPLACE FUNCTION grpval (&lt;br /&gt;
  2     tab IN VARCHAR2,&lt;br /&gt;
  3     col IN VARCHAR2,&lt;br /&gt;
  4     grpfunc IN VARCHAR2,&lt;br /&gt;
  5     whr IN VARCHAR2 := NULL)&lt;br /&gt;
  6  RETURN VARCHAR2&lt;br /&gt;
  7  IS&lt;br /&gt;
  8     retval VARCHAR2(32767);&lt;br /&gt;
  9  BEGIN&lt;br /&gt;
 10     EXECUTE IMMEDIATE&lt;br /&gt;
 11        &amp;quot;SELECT &amp;quot; || yourfunction || &amp;quot;(&amp;quot; || col || &amp;quot;)&lt;br /&gt;
 12           FROM &amp;quot; || tab || &amp;quot; WHERE &amp;quot; || NVL (whr, &amp;quot;1=1&amp;quot;)&lt;br /&gt;
 13        INTO retval;&lt;br /&gt;
 14     RETURN retval;&lt;br /&gt;
 15  END;&lt;br /&gt;
 16  /&lt;br /&gt;
Function created.&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;
== Catch exception from &amp;quot;EXECUTE IMMEDIATE&amp;quot;==&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; CREATE OR REPLACE FUNCTION tabcount (tab IN VARCHAR2, whr IN VARCHAR2 := NULL)&lt;br /&gt;
  2     RETURN PLS_INTEGER AUTHID CURRENT_USER&lt;br /&gt;
  3  IS&lt;br /&gt;
  4     str      VARCHAR2 (32767) := &amp;quot;SELECT COUNT(*) FROM &amp;quot; || tab;&lt;br /&gt;
  5     retval   PLS_INTEGER;&lt;br /&gt;
  6  BEGIN&lt;br /&gt;
  7     IF whr IS NOT NULL&lt;br /&gt;
  8     THEN&lt;br /&gt;
  9        str := str || &amp;quot; WHERE &amp;quot; || whr;&lt;br /&gt;
 10     END IF;&lt;br /&gt;
 11&lt;br /&gt;
 12     EXECUTE IMMEDIATE str&lt;br /&gt;
 13                  INTO retval;&lt;br /&gt;
 14  EXCEPTION&lt;br /&gt;
 15     WHEN OTHERS&lt;br /&gt;
 16     THEN&lt;br /&gt;
 17        DBMS_OUTPUT.put_line (&amp;quot;TABCOUNT ERROR: &amp;quot; || DBMS_UTILITY.FORMAT_ERROR_STACK);&lt;br /&gt;
 18        DBMS_OUTPUT.put_line (str);&lt;br /&gt;
 19        RETURN NULL;&lt;br /&gt;
 20  END;&lt;br /&gt;
 21  /&lt;br /&gt;
SP2-0806: Function created with compilation warnings&lt;br /&gt;
SQL&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Create a function to count table row==&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;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE product (&lt;br /&gt;
  2       product_name     VARCHAR2(25) PRIMARY KEY,&lt;br /&gt;
  3       product_price    NUMBER(4,2),&lt;br /&gt;
  4       quantity_on_hand NUMBER(5,0),&lt;br /&gt;
  5       last_stock_date  DATE&lt;br /&gt;
  6       );&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO product VALUES (&amp;quot;Product 1&amp;quot;, 99,  1,    &amp;quot;15-JAN-03&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO product VALUES (&amp;quot;Product 2&amp;quot;, 75,  1000, &amp;quot;15-JAN-02&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO product VALUES (&amp;quot;Product 3&amp;quot;, 50,  100,  &amp;quot;15-JAN-03&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO product VALUES (&amp;quot;Product 4&amp;quot;, 25,  10000, null);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO product VALUES (&amp;quot;Product 5&amp;quot;, 9.95,1234, &amp;quot;15-JAN-04&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO product VALUES (&amp;quot;Product 6&amp;quot;, 45,  1,    TO_DATE(&amp;quot;December 31, 2008, 11:30 P.M.&amp;quot;,&amp;quot;Month dd, YYYY, HH:MI P.M.&amp;quot;));&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; CREATE OR REPLACE FUNCTION tabcount (nm IN VARCHAR2)RETURN PLS_INTEGER&lt;br /&gt;
  2  IS&lt;br /&gt;
  3&lt;br /&gt;
  4     retval PLS_INTEGER;&lt;br /&gt;
  5&lt;br /&gt;
  6  BEGIN&lt;br /&gt;
  7&lt;br /&gt;
  8     EXECUTE IMMEDIATE &amp;quot;SELECT COUNT(*) FROM &amp;quot; || nm INTO retval;&lt;br /&gt;
  9&lt;br /&gt;
 10     RETURN retval;&lt;br /&gt;
 11  END;&lt;br /&gt;
 12  /&lt;br /&gt;
Function created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; select tabcount(&amp;quot;product&amp;quot;) from dual;&lt;br /&gt;
TABCOUNT(&amp;quot;PRODUCT&amp;quot;)&lt;br /&gt;
-------------------&lt;br /&gt;
                  6&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table product;&lt;br /&gt;
Table dropped.&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Define a procedure to drop a database object==&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;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE product (&lt;br /&gt;
  2       product_name     VARCHAR2(25) PRIMARY KEY,&lt;br /&gt;
  3       product_price    NUMBER(4,2),&lt;br /&gt;
  4       quantity_on_hand NUMBER(5,0),&lt;br /&gt;
  5       last_stock_date  DATE&lt;br /&gt;
  6       );&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 PROCEDURE dropit (ittype IN VARCHAR2, itname IN VARCHAR2)&lt;br /&gt;
  2  IS&lt;br /&gt;
  3  BEGIN&lt;br /&gt;
  4     EXECUTE IMMEDIATE &amp;quot;drop &amp;quot; || ittype || &amp;quot; &amp;quot; || itname;&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; EXEC dropit(&amp;quot;table&amp;quot;,&amp;quot;product&amp;quot;);&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;&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Drop user, create user and grant permission with PL/SQL code==&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; DEF username = plsql&lt;br /&gt;
SQL&amp;gt; DEF default_ts = USERS&lt;br /&gt;
SQL&amp;gt; DEF temp_ts = TEMP&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; SET FEEDBACK OFF SERVEROUTPUT ON VERIFY OFF TERMOUT OFF&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; DECLARE&lt;br /&gt;
  2     v_count       INTEGER        := 0;&lt;br /&gt;
  3     v_statement   VARCHAR2 (500);&lt;br /&gt;
  4  BEGIN&lt;br /&gt;
  5&lt;br /&gt;
  6     SELECT COUNT (1) INTO v_count FROM dba_users&lt;br /&gt;
  7      WHERE username = UPPER (&amp;quot;&amp;amp;username&amp;quot;);&lt;br /&gt;
  8&lt;br /&gt;
  9     IF v_count != 0&lt;br /&gt;
 10     THEN&lt;br /&gt;
 11        EXECUTE IMMEDIATE (&amp;quot;DROP USER &amp;amp;username CASCADE&amp;quot;);&lt;br /&gt;
 12     END IF;&lt;br /&gt;
 13&lt;br /&gt;
 14     v_count := 0;&lt;br /&gt;
 15&lt;br /&gt;
 16     v_statement :=&lt;br /&gt;
 17           &amp;quot;CREATE USER &amp;amp;username IDENTIFIED BY oracle&amp;quot;&lt;br /&gt;
 18        || &amp;quot; DEFAULT TABLESPACE &amp;amp;default_ts&amp;quot;&lt;br /&gt;
 19        || &amp;quot; TEMPORARY TABLESPACE &amp;amp;temp_ts&amp;quot;&lt;br /&gt;
 20        || &amp;quot; QUOTA UNLIMITED ON &amp;amp;default_ts&amp;quot;&lt;br /&gt;
 21        || &amp;quot; ACCOUNT UNLOCK&amp;quot;;&lt;br /&gt;
 22&lt;br /&gt;
 23     EXECUTE IMMEDIATE (v_statement);&lt;br /&gt;
 24&lt;br /&gt;
 25     -- Grant permissions&lt;br /&gt;
 26     EXECUTE IMMEDIATE (&amp;quot;GRANT connect, resource TO &amp;amp;username&amp;quot;);&lt;br /&gt;
 27     EXECUTE IMMEDIATE (&amp;quot;GRANT CTXAPP TO &amp;amp;username&amp;quot;);&lt;br /&gt;
 28&lt;br /&gt;
 29     DBMS_OUTPUT.put_line (&amp;quot;  &amp;quot;);&lt;br /&gt;
 30     DBMS_OUTPUT.put_line (&amp;quot;User &amp;amp;username created successfully&amp;quot;);&lt;br /&gt;
 31     DBMS_OUTPUT.put_line (&amp;quot;  &amp;quot;);&lt;br /&gt;
 32&lt;br /&gt;
 33  EXCEPTION&lt;br /&gt;
 34     WHEN OTHERS&lt;br /&gt;
 35     THEN&lt;br /&gt;
 36        DBMS_OUTPUT.put_line (SQLERRM);&lt;br /&gt;
 37        DBMS_OUTPUT.put_line (&amp;quot;   &amp;quot;);&lt;br /&gt;
 38  END;&lt;br /&gt;
 39  /&lt;br /&gt;
User plsql created successfully&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; SET FEEDBACK ON TERMOUT ON&lt;br /&gt;
SQL&amp;gt;&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;
== EXECUTE IMMEDIATE dynamic sql to alter session==&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;&lt;br /&gt;
SQL&amp;gt; DECLARE&lt;br /&gt;
  2     lv_sql_txt VARCHAR2(200);&lt;br /&gt;
  3  BEGIN&lt;br /&gt;
  4     EXECUTE IMMEDIATE &amp;quot;ALTER SESSION SET SQL_TRACE=TRUE&amp;quot;;&lt;br /&gt;
  5     lv_sql_txt := &amp;quot;ALTER SESSION SET SORT_AREA_SIZE = 1000000&amp;quot;;&lt;br /&gt;
  6     EXECUTE IMMEDIATE lv_sql_txt;&lt;br /&gt;
  7  END;&lt;br /&gt;
  8  /&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;
== &amp;quot;execute immediate in&amp;quot; action==&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 demo table&lt;br /&gt;
SQL&amp;gt; create table Employee(&lt;br /&gt;
  2    ID                 VARCHAR2(4 BYTE)         NOT NULL,&lt;br /&gt;
  3    First_Name         VARCHAR2(10 BYTE),&lt;br /&gt;
  4    Last_Name          VARCHAR2(10 BYTE),&lt;br /&gt;
  5    Start_Date         DATE,&lt;br /&gt;
  6    End_Date           DATE,&lt;br /&gt;
  7    Salary             Number(8,2),&lt;br /&gt;
  8    City               VARCHAR2(10 BYTE),&lt;br /&gt;
  9    Description        VARCHAR2(15 BYTE)&lt;br /&gt;
 10  )&lt;br /&gt;
 11  /&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; -- prepare data&lt;br /&gt;
SQL&amp;gt; insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary,  City,       Description)&lt;br /&gt;
  2               values (&amp;quot;01&amp;quot;,&amp;quot;Jason&amp;quot;,    &amp;quot;Martin&amp;quot;,  to_date(&amp;quot;19960725&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), to_date(&amp;quot;20060725&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 1234.56, &amp;quot;Toronto&amp;quot;,  &amp;quot;Programmer&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary,  City,       Description)&lt;br /&gt;
  2                values(&amp;quot;02&amp;quot;,&amp;quot;Alison&amp;quot;,   &amp;quot;Mathews&amp;quot;, to_date(&amp;quot;19760321&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), to_date(&amp;quot;19860221&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 6661.78, &amp;quot;Vancouver&amp;quot;,&amp;quot;Tester&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary,  City,       Description)&lt;br /&gt;
  2                values(&amp;quot;03&amp;quot;,&amp;quot;James&amp;quot;,    &amp;quot;Smith&amp;quot;,   to_date(&amp;quot;19781212&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), to_date(&amp;quot;19900315&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 6544.78, &amp;quot;Vancouver&amp;quot;,&amp;quot;Tester&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary,  City,       Description)&lt;br /&gt;
  2                values(&amp;quot;04&amp;quot;,&amp;quot;Celia&amp;quot;,    &amp;quot;Rice&amp;quot;,    to_date(&amp;quot;19821024&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), to_date(&amp;quot;19990421&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 2344.78, &amp;quot;Vancouver&amp;quot;,&amp;quot;Manager&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary,  City,       Description)&lt;br /&gt;
  2                values(&amp;quot;05&amp;quot;,&amp;quot;Robert&amp;quot;,   &amp;quot;Black&amp;quot;,   to_date(&amp;quot;19840115&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), to_date(&amp;quot;19980808&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 2334.78, &amp;quot;Vancouver&amp;quot;,&amp;quot;Tester&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary, City,        Description)&lt;br /&gt;
  2                values(&amp;quot;06&amp;quot;,&amp;quot;Linda&amp;quot;,    &amp;quot;Green&amp;quot;,   to_date(&amp;quot;19870730&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), to_date(&amp;quot;19960104&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 4322.78,&amp;quot;New York&amp;quot;,  &amp;quot;Tester&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary, City,        Description)&lt;br /&gt;
  2                values(&amp;quot;07&amp;quot;,&amp;quot;David&amp;quot;,    &amp;quot;Larry&amp;quot;,   to_date(&amp;quot;19901231&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), to_date(&amp;quot;19980212&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 7897.78,&amp;quot;New York&amp;quot;,  &amp;quot;Manager&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary, City,        Description)&lt;br /&gt;
  2                values(&amp;quot;08&amp;quot;,&amp;quot;James&amp;quot;,    &amp;quot;Cat&amp;quot;,     to_date(&amp;quot;19960917&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), to_date(&amp;quot;20020415&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 1232.78,&amp;quot;Vancouver&amp;quot;, &amp;quot;Tester&amp;quot;)&lt;br /&gt;
  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; -- display data in the table&lt;br /&gt;
SQL&amp;gt; select * from Employee&lt;br /&gt;
  2  /&lt;br /&gt;
ID   FIRST_NAME LAST_NAME  START_DAT END_DATE      SALARY CITY       DESCRIPTION&lt;br /&gt;
---- ---------- ---------- --------- --------- ---------- ---------- ---------------&lt;br /&gt;
01   Jason      Martin     25-JUL-96 25-JUL-06    1234.56 Toronto    Programmer&lt;br /&gt;
02   Alison     Mathews    21-MAR-76 21-FEB-86    6661.78 Vancouver  Tester&lt;br /&gt;
03   James      Smith      12-DEC-78 15-MAR-90    6544.78 Vancouver  Tester&lt;br /&gt;
04   Celia      Rice       24-OCT-82 21-APR-99    2344.78 Vancouver  Manager&lt;br /&gt;
05   Robert     Black      15-JAN-84 08-AUG-98    2334.78 Vancouver  Tester&lt;br /&gt;
06   Linda      Green      30-JUL-87 04-JAN-96    4322.78 New York   Tester&lt;br /&gt;
07   David      Larry      31-DEC-90 12-FEB-98    7897.78 New York   Manager&lt;br /&gt;
08   James      Cat        17-SEP-96 15-APR-02    1232.78 Vancouver  Tester&lt;br /&gt;
8 rows selected.&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 p_backupEmp is&lt;br /&gt;
  2      v_name_tx VARCHAR2(30);&lt;br /&gt;
  3  begin&lt;br /&gt;
  4  --    v_name_tx:=&amp;quot;employee&amp;quot;||TO_CHAR(sysdate,&amp;quot;YYYYMMDDHH24MISS&amp;quot;);&lt;br /&gt;
  5      v_name_tx:=&amp;quot;employee001&amp;quot;;&lt;br /&gt;
  6      execute immediate  &amp;quot;create table &amp;quot;||v_name_tx||&lt;br /&gt;
  7         &amp;quot; as select * from employee&amp;quot;;&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; call p_backupEmp();&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; -- clean the table&lt;br /&gt;
SQL&amp;gt; drop table Employee&lt;br /&gt;
  2  /&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== execute immediate into==&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; CREATE TABLE EMP (EMPNO NUMBER(4) NOT NULL,&lt;br /&gt;
  2                    ENAME VARCHAR2(10),&lt;br /&gt;
  3                    JOB VARCHAR2(9),&lt;br /&gt;
  4                    MGR NUMBER(4),&lt;br /&gt;
  5                    HIREDATE DATE,&lt;br /&gt;
  6                    SAL NUMBER(7, 2),&lt;br /&gt;
  7                    COMM NUMBER(7, 2),&lt;br /&gt;
  8                    DEPTNO NUMBER(2));&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7369, &amp;quot;SMITH&amp;quot;, &amp;quot;CLERK&amp;quot;,    7902, TO_DATE(&amp;quot;17-DEC-1980&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 800, NULL, 20);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7499, &amp;quot;ALLEN&amp;quot;, &amp;quot;SALESMAN&amp;quot;, 7698, TO_DATE(&amp;quot;20-FEB-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 1600, 300, 30);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7521, &amp;quot;WARD&amp;quot;,  &amp;quot;SALESMAN&amp;quot;, 7698, TO_DATE(&amp;quot;22-FEB-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 1250, 500, 30);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7566, &amp;quot;JONES&amp;quot;, &amp;quot;MANAGER&amp;quot;,  7839, TO_DATE(&amp;quot;2-APR-1981&amp;quot;,  &amp;quot;DD-MON-YYYY&amp;quot;), 2975, NULL, 20);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7654, &amp;quot;MARTIN&amp;quot;, &amp;quot;SALESMAN&amp;quot;, 7698,TO_DATE(&amp;quot;28-SEP-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 1250, 1400, 30);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7698, &amp;quot;BLAKE&amp;quot;, &amp;quot;MANAGER&amp;quot;, 7839,TO_DATE(&amp;quot;1-MAY-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 2850, NULL, 30);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7782, &amp;quot;CLARK&amp;quot;, &amp;quot;MANAGER&amp;quot;, 7839,TO_DATE(&amp;quot;9-JUN-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 2450, NULL, 10);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7788, &amp;quot;SCOTT&amp;quot;, &amp;quot;ANALYST&amp;quot;, 7566,TO_DATE(&amp;quot;09-DEC-1982&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 3000, NULL, 20);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7839, &amp;quot;KING&amp;quot;, &amp;quot;PRESIDENT&amp;quot;, NULL,TO_DATE(&amp;quot;17-NOV-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 5000, NULL, 10);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7844, &amp;quot;TURNER&amp;quot;, &amp;quot;SALESMAN&amp;quot;, 7698,TO_DATE(&amp;quot;8-SEP-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 1500, 0, 30);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7876, &amp;quot;ADAMS&amp;quot;, &amp;quot;CLERK&amp;quot;, 7788,TO_DATE(&amp;quot;12-JAN-1983&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 1100, NULL, 20);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7900, &amp;quot;JAMES&amp;quot;, &amp;quot;CLERK&amp;quot;, 7698,TO_DATE(&amp;quot;3-DEC-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 950, NULL, 30);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7902, &amp;quot;FORD&amp;quot;, &amp;quot;ANALYST&amp;quot;, 7566,TO_DATE(&amp;quot;3-DEC-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 3000, NULL, 20);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7934, &amp;quot;MILLER&amp;quot;, &amp;quot;CLERK&amp;quot;, 7782,TO_DATE(&amp;quot;23-JAN-1982&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 1300, NULL, 10);&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 function get_row_cnts( p_tname in varchar2 ) return number&lt;br /&gt;
  2  as&lt;br /&gt;
  3     l_cnt number;&lt;br /&gt;
  4  begin&lt;br /&gt;
  5          execute immediate &amp;quot;select count(*) from &amp;quot; || p_tname into l_cnt;&lt;br /&gt;
  6          return l_cnt;&lt;br /&gt;
  7  end;&lt;br /&gt;
  8  /&lt;br /&gt;
Function created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; set serveroutput on&lt;br /&gt;
SQL&amp;gt; exec dbms_output.put_line( get_row_cnts(&amp;quot;emp&amp;quot;) );&lt;br /&gt;
14&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table emp;&lt;br /&gt;
Table dropped.&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== EXECUTE IMMEDIATE USING 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;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE employee(&lt;br /&gt;
  2       employee_id VARCHAR2(3) PRIMARY KEY,&lt;br /&gt;
  3       first_name  VARCHAR2(15),&lt;br /&gt;
  4       last_name   VARCHAR2(20),&lt;br /&gt;
  5       hire_date   DATE&lt;br /&gt;
  6       );&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 PROCEDURE run_9am_procedure (&lt;br /&gt;
  2     id_in     IN   employee.employee_id%TYPE,&lt;br /&gt;
  3     hour_in   IN   INTEGER&lt;br /&gt;
  4  )&lt;br /&gt;
  5  IS&lt;br /&gt;
  6     v_apptcount   INTEGER;&lt;br /&gt;
  7     v_name        VARCHAR2 (100);&lt;br /&gt;
  8  BEGIN&lt;br /&gt;
  9     EXECUTE IMMEDIATE &amp;quot;BEGIN &amp;quot;&lt;br /&gt;
 10                       || TO_CHAR (SYSDATE, &amp;quot;DAY&amp;quot;)&lt;br /&gt;
 11                       || &amp;quot;_set_schedule (:id, :hour, :name, :appts); END;&amp;quot;&lt;br /&gt;
 12        USING IN id_in, IN hour_in, OUT v_name, OUT v_apptcount;&lt;br /&gt;
 13&lt;br /&gt;
 14     DBMS_OUTPUT.put_line (v_name|| &amp;quot; has &amp;quot;|| v_apptcount|| &amp;quot; appointments on &amp;quot;|| TO_CHAR (SYSDATE));&lt;br /&gt;
 15  END;&lt;br /&gt;
 16  /&lt;br /&gt;
Procedure created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table employee;&lt;br /&gt;
Table dropped.&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;
== Execute sql statement in a 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;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE PROCEDURE runddl (ddl_in in VARCHAR2)&lt;br /&gt;
  2     AUTHID CURRENT_USER&lt;br /&gt;
  3  IS&lt;br /&gt;
  4  BEGIN&lt;br /&gt;
  5     EXECUTE IMMEDIATE ddl_in;&lt;br /&gt;
  6  END;&lt;br /&gt;
  7  /&lt;br /&gt;
Procedure created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; EXEC runddl(&amp;quot;select sysdate from dual&amp;quot;);&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;
== Quotation string==&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;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE FUNCTION qstring (str_in IN VARCHAR2, qchar_in VARCHAR2 := &amp;quot;|&amp;quot;)&lt;br /&gt;
  2     RETURN VARCHAR2&lt;br /&gt;
  3  IS&lt;br /&gt;
  4     retval VARCHAR2(32767);&lt;br /&gt;
  5  BEGIN&lt;br /&gt;
  6     EXECUTE IMMEDIATE&lt;br /&gt;
  7        &amp;quot;BEGIN :var := q&amp;quot;&amp;quot;&amp;quot; || qchar_in || str_in || qchar_in || &amp;quot;&amp;quot;&amp;quot;; END;&amp;quot;&lt;br /&gt;
  8        USING OUT retval;&lt;br /&gt;
  9     RETURN retval;&lt;br /&gt;
 10  END;&lt;br /&gt;
 11  /&lt;br /&gt;
Function created.&lt;br /&gt;
SQL&amp;gt;&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;
== select into rowtype then use it in &amp;quot;execute immediate&amp;quot;==&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; create table job_parameters&lt;br /&gt;
  2  ( jobid number primary key,&lt;br /&gt;
  3    iterations number,&lt;br /&gt;
  4    table_idx number );&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create or replace procedure dont_bind( p_job in number )&lt;br /&gt;
  2  as&lt;br /&gt;
  3      l_rec job_parameters%rowtype;&lt;br /&gt;
  4  begin&lt;br /&gt;
  5      select * into l_rec from job_parameters where jobid = p_job;&lt;br /&gt;
  6      for i in 1 .. l_rec.iterations&lt;br /&gt;
  7      loop&lt;br /&gt;
  8          execute immediate &amp;quot;insert into t&amp;quot; || l_rec.table_idx || &amp;quot; values ( &amp;quot; ||  i || &amp;quot; )&amp;quot;;&lt;br /&gt;
  9          commit;&lt;br /&gt;
 10      end loop;&lt;br /&gt;
 11      delete from job_parameters where jobid = p_job;&lt;br /&gt;
 12  end;&lt;br /&gt;
 13  /&lt;br /&gt;
Procedure created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table job_parameters;&lt;br /&gt;
Table dropped.&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;
== Simple EXECUTE IMMEDIATE==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The EXECUTE IMMEDIATE command can be&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;OL&amp;gt;&amp;lt;LI&amp;gt;a VARCHAR2 variable,&amp;lt;/LI&amp;gt;&amp;lt;LI&amp;gt;a literal quoted string, or&amp;lt;/LI&amp;gt;&amp;lt;LI&amp;gt;any string expression.&amp;lt;/LI&amp;gt;&amp;lt;/OL&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;
begin&lt;br /&gt;
    execute immediate &amp;quot;whatever_text_string_you_want&amp;quot;;&lt;br /&gt;
end;&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Update row with &amp;quot;execute immediate&amp;quot;==&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;&lt;br /&gt;
SQL&amp;gt; create or replace&lt;br /&gt;
  2  function update_row( p_owner    in varchar2,&lt;br /&gt;
  3                       p_newDname in varchar2,&lt;br /&gt;
  4                       p_newLoc   in varchar2,&lt;br /&gt;
  5                       p_deptno   in varchar2,&lt;br /&gt;
  6                       p_rowid    out varchar2 )&lt;br /&gt;
  7  return number&lt;br /&gt;
  8  is&lt;br /&gt;
  9  begin&lt;br /&gt;
 10      execute immediate &amp;quot;update &amp;quot; || p_owner || &amp;quot;.dept&lt;br /&gt;
 11                      set dname = :bv1, loc = :bv2&lt;br /&gt;
 12                    where deptno = to_number(:pk)&lt;br /&gt;
 13                returning rowid into :out&amp;quot;&lt;br /&gt;
 14      using p_newDname, p_newLoc, p_deptno&lt;br /&gt;
 15      returning into p_rowid;&lt;br /&gt;
 16&lt;br /&gt;
 17      return sql%rowcount;&lt;br /&gt;
 18  end;&lt;br /&gt;
 19  /&lt;br /&gt;
Function 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      l_rowid   varchar(50);&lt;br /&gt;
  3      l_rows    number;&lt;br /&gt;
  4  begin&lt;br /&gt;
  5      l_rows := update_row( &amp;quot;SCOTT&amp;quot;, &amp;quot;CONSULTING&amp;quot;, &amp;quot;WASHINGTON&amp;quot;, &amp;quot;10&amp;quot;, l_rowid );&lt;br /&gt;
  6      dbms_output.put_line( &amp;quot;Updated &amp;quot; || l_rows || &amp;quot; rows&amp;quot; );&lt;br /&gt;
  7      dbms_output.put_line( &amp;quot;its rowid was &amp;quot; || l_rowid );&lt;br /&gt;
  8  end;&lt;br /&gt;
  9  /&lt;br /&gt;
declare&lt;br /&gt;
*&lt;br /&gt;
ERROR at line 1:&lt;br /&gt;
ORA-00942: table or view does not exist&lt;br /&gt;
ORA-06512: at &amp;quot;sqle.UPDATE_ROW&amp;quot;, line 9&lt;br /&gt;
ORA-06512: at line 5&lt;br /&gt;
&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;
== Use &amp;quot;EXECUTE IMMEDIATE&amp;quot; to execute an update statement==&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; CREATE OR REPLACE FUNCTION updnval (&lt;br /&gt;
  2     col        IN   VARCHAR2&lt;br /&gt;
  3   , val        IN   NUMBER&lt;br /&gt;
  4   , start_in   IN   DATE&lt;br /&gt;
  5   , end_in     IN   DATE&lt;br /&gt;
  6  )&lt;br /&gt;
  7     RETURN PLS_INTEGER&lt;br /&gt;
  8  IS&lt;br /&gt;
  9  BEGIN&lt;br /&gt;
 10     EXECUTE IMMEDIATE    &amp;quot;UPDATE employee SET &amp;quot;&lt;br /&gt;
 11                       || col&lt;br /&gt;
 12                       || &amp;quot; = :the_value&lt;br /&gt;
 13          WHERE hire_date BETWEEN :lo AND :hi&amp;quot;&lt;br /&gt;
 14                 USING val, start_in, end_in;&lt;br /&gt;
 15&lt;br /&gt;
 16     RETURN SQL%ROWCOUNT;&lt;br /&gt;
 17  END;&lt;br /&gt;
 18  /&lt;br /&gt;
Function created.&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;
== Use &amp;quot;execute immediate&amp;quot; to run a insert statement==&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; create table t ( x int );&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; alter session set sql_trace=true;&lt;br /&gt;
Session altered.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; begin&lt;br /&gt;
  2      for i in 1 .. 1000&lt;br /&gt;
  3      loop&lt;br /&gt;
  4          execute immediate &amp;quot;insert into t values ( &amp;quot; || i || &amp;quot;)&amp;quot;;&lt;br /&gt;
  5      end loop;&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; drop table t;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Use procedure to create an index dynamically==&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;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE PROCEDURE runddl (ddl_in in VARCHAR2)&lt;br /&gt;
  2     AUTHID CURRENT_USER&lt;br /&gt;
  3  IS&lt;br /&gt;
  4  BEGIN&lt;br /&gt;
  5     EXECUTE IMMEDIATE ddl_in;&lt;br /&gt;
  6  END;&lt;br /&gt;
  7  /&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;
SQL&amp;gt; CREATE OR REPLACE PROCEDURE creindx(index_in IN VARCHAR2, tab_in IN VARCHAR2, col_in IN VARCHAR2)&lt;br /&gt;
  2  IS&lt;br /&gt;
  3     DDL_statement VARCHAR2(200):= &amp;quot;CREATE INDEX &amp;quot; || index_in || &amp;quot; ON &amp;quot; || tab_in ||&amp;quot; ( &amp;quot; || col_in || &amp;quot;)&amp;quot;;&lt;br /&gt;
  4  BEGIN&lt;br /&gt;
  5     runddl (DDL_statement);&lt;br /&gt;
  6  END;&lt;br /&gt;
  7  /&lt;br /&gt;
Procedure created.&lt;br /&gt;
SQL&amp;gt;&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;
== Wrap &amp;quot;EXECUTE IMMEDIATE&amp;quot; for current user==&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; CREATE OR REPLACE PROCEDURE runddl (ddl_in in VARCHAR2)&lt;br /&gt;
  2     AUTHID CURRENT_USER&lt;br /&gt;
  3  IS&lt;br /&gt;
  4  BEGIN&lt;br /&gt;
  5     EXECUTE IMMEDIATE ddl_in;&lt;br /&gt;
  6  END;&lt;br /&gt;
  7  /&lt;br /&gt;
Procedure created.&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;
== Wrap statement with &amp;quot;BEGIN...END&amp;quot;==&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; CREATE OR REPLACE PROCEDURE dynPLSQL (blk IN VARCHAR2)&lt;br /&gt;
  2  IS&lt;br /&gt;
  3  BEGIN&lt;br /&gt;
  4     EXECUTE IMMEDIATE &amp;quot;BEGIN &amp;quot; || RTRIM (blk, &amp;quot;;&amp;quot;) || &amp;quot;; END;&amp;quot;;&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;&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>