ITPub博客

首页 > 数据库 > Oracle > PLSQL Language Referenc-PL/SQL动态SQL-练习:在动态SQL块中调用子程序。

PLSQL Language Referenc-PL/SQL动态SQL-练习:在动态SQL块中调用子程序。

原创 Oracle 作者: luisedalian 时间:2014-03-18 07:15:51 0 删除 编辑

练习:在动态SQL块中调用子程序。(使用HR方案)

-- 11g12_07_01.sql                                 

-- 1. 查看Departments表中原始数据

SELECT * FROM Departments;

-- 2. 创建CreateDept存储过程

-- 3. 执行11g12_07_01.tst测试该存储过程

-- 1. 再次查看Departments表中的数据

 

-- 11g12_07_01.prc

CREATE OR REPLACE PROCEDURE CreateDept (

  deptid IN OUT NUMBER,

  dname  IN      VARCHAR2,

  mgrid  IN      NUMBER,

  locid  IN      NUMBER

) AS

BEGIN

  deptid := departments_seq.NEXTVAL;

  INSERT INTO departments VALUES (deptid, dname, mgrid, locid);

END;

 

-- 11g12_07_01.tst

DECLARE

    plSQLBlock VARCHAR2(500);

    newDeptID  NUMBER(4);

    newDName   VARCHAR2(30) := 'Advertising';

    newMGrid   NUMBER(6)    := 200;

    newLocID   NUMBER(4)    := 1700;

BEGIN

    -- 动态PL/SQL块调用子程序:

    plSQLBLock := 'BEGIN CreateDept(:a, :b, :c, :d); END;';

   

    -- 使用USING子句指定绑定变量,且对第1个参数指定了IN OUT模式

    EXECUTE IMMEDIATE plSQLBlock

    USING IN OUT newDeptID, newDName, newMGrid, newLocID;   

    COMMIT;

END;

 

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/17013648/viewspace-1123730/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2012-02-06

  • 博文量
    1986
  • 访问量
    6044090