首页 > 代码库 > 编写一个过程将查询的字段和where条件中的字符串值动态调用
编写一个过程将查询的字段和where条件中的字符串值动态调用
以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条件中的字符串值动态调用
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。