码迷,mamicode.com
首页 > 其他好文 > 详细

编写一个过程将查询的字段和where条件中的字符串值动态调用

时间:2015-01-27 00:35:00      阅读:206      评论:0      收藏:0      [点我收藏+]

标签:

以scott用户中的emp表为例,编写一个存储过程查询emp表中某个字段的值,但是要查哪个字段是不确定的,where条件中传入的字符串也是不确定的。

DECLARE
   v_a       VARCHAR2(20)   := 'sal';
   v_sql     VARCHAR2(200);
   TYPE tab_org_name     IS TABLE OF VARCHAR2(50);
   v_org_name_tab        tab_org_name;
BEGIN
   v_sql := 'SELECT '|| v_a ||' FROM emp';
   dbms_output.put_line(v_sql);
   EXECUTE IMMEDIATE v_sql BULK COLLECT INTO v_org_name_tab;
   FOR i IN 1 .. v_org_name_tab.count LOOP
      dbms_output.put_line(v_org_name_tab(i));
   END LOOP;
END;


技术分享

如果带where条件,一定要注意where条件中有字符串时对单引号的应用,正确代码如下:

DECLARE
   v_a       VARCHAR2(20)   := 'sal';
   v_info    VARCHAR2(20)   := '''CLERK'''; 
   v_sql     VARCHAR2(200);
   TYPE tab_org_name     IS TABLE OF VARCHAR2(50);
   v_org_name_tab        tab_org_name;
BEGIN
   v_sql := 'SELECT '|| v_a ||' FROM emp WHERE emp.JOB = '||v_info;
   dbms_output.put_line(v_sql);
   EXECUTE IMMEDIATE v_sql BULK COLLECT INTO v_org_name_tab;
   FOR i IN 1 .. v_org_name_tab.count LOOP
      dbms_output.put_line(v_org_name_tab(i));
   END LOOP;
END;

执行结果如下图:

技术分享




编写一个过程将查询的字段和where条件中的字符串值动态调用

标签:

原文地址:http://blog.csdn.net/zjt921586518/article/details/43168955

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!