频道栏目
首页 > 数据库 > 其他综合 > 正文
编写一个过程将查询的字段和where条件中的字符串值动态调用
2015-01-27 10:23:31         来源:zjt921586518的专栏  
收藏   我要投稿

以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;

执行结果如下图:

\


点击复制链接 与好友分享!回本站首页
上一篇:Hadoop-2.6.0伪分布--安装配置hbase
下一篇:使用cgroup限制进程的磁盘io
相关文章
图文推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站