ITPub博客

首页 > 数据库 > Oracle > 避免动态SQL(二)

避免动态SQL(二)

原创 Oracle 作者:luisedalian 时间:2014-01-16 10:54:09 0 删除 编辑
案例2

说明如何在特定的情况下,将动态SQL修改为静态SQL。

点击(此处)折叠或打开

  1. CREATE OR REPLACE PROCEDURE proc1(p_cname VARCHAR2, p_empno NUMBER)
  2. IS
  3.   v_value VARCHAR2(100);
  4. BEGIN
  5.   --使用动态SQL
  6.   EXECUTE IMMEDIATE \'SELECT \' || p_cname || \' FROM emp WHERE empno = :x\' INTO v_value USING p_empno;
  7.   dbms_output.put_line(\'Dynamic SQL: \' || v_value);
  8.   --修改为静态SQL
  9.   SELECT DECODE(UPPER(p_cname), \'ENAME\', ename, \'EMPNO\', empno, \'HIREDATE\', to_char(hiredate, \'YYYY-MM-DD\'))
  10.   INTO v_value FROM emp WHERE empno = p_empno;
  11.   dbms_output.put_line(\'Static SQL: \' || v_value);
  12. END;
  13. /

  14. set serveroutput on
  15. exec proc1(\'hiredate\', 7788);

  16. Dynamic SQL: 19-APR-87
  17. Static SQL: 1987-04-19


  18. exec proc1(\'ename\', 7788);

  19. Dynamic SQL: SCOTT
  20. Static SQL: SCOTT

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

上一篇: 避免动态SQL(一)
请登录后发表评论 登录
全部评论

注册时间:2012-02-06

  • 博文量
    1986
  • 访问量
    6041069