Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Table of Contents


Overview

 The usage of dynamic SQL statement in ORACLE is almost same with that of ALTIBASE HDB.


Example 

Oracle

Altibase

Comments

CREATE OR REPLACE PROCEDURE raise_emp_salary
AS
sql_stmt VARCHAR2(200);
v_column VARCHAR2(30) := 'dno';
dno NUMBER(4) := 46;
dname VARCHAR2(30) := 'Special Projects';
mgr_no NUMBER(6) := 200;
dep_location NUMBER(4) := 1700;
BEGIN
-- note that there is no semi-colon (;) inside the quotes '...'
EXECUTE IMMEDIATE 'CREATE TABLE bonus (id NUMBER, amt NUMBER)';
sql_stmt := 'INSERT INTO departments VALUES (:1, :2, :3, :4)';
EXECUTE IMMEDIATE sql_stmt USING dno, dname, mgr_no, dep_location;
EXECUTE IMMEDIATE 'DELETE FROM departments WHERE ' || v_column || ' = :num'
USING dno;
EXECUTE IMMEDIATE 'ALTER SESSION SET SQL_TRACE TRUE';
EXECUTE IMMEDIATE 'DROP TABLE bonus';
END;
/

CREATE OR REPLACE PROCEDURE raise_emp_salary
AS
sql_stmt VARCHAR2(200);
v_column VARCHAR2(30) := 'dno';
dno NUMBER(4) := 46;
dname VARCHAR2(30) := 'Special Projects';
mgr_no NUMBER(6) := 200;
dep_location NUMBER(4) := 1700;
BEGIN
-- note that there is no semi-colon (;) inside the quotes '...'
EXECUTE IMMEDIATE 'CREATE TABLE bonus (id NUMBER, amt NUMBER)';
sql_stmt := 'INSERT INTO departments VALUES (dno, dname, mgr_no, dep_location)';
EXECUTE IMMEDIATE sql_stmt USING dno, dname, mgr_no, dep_location;
EXECUTE IMMEDIATE 'DELETE FROM departments WHERE ' || v_column || ' = :num'
USING dno;
EXECUTE IMMEDIATE 'ALTER SESSION SET EXPLAIN PLAN = ON';
EXECUTE IMMEDIATE 'DROP TABLE bonus';
END;
/