一个SQL语句中的多个报告

时间:2017-10-18 07:27:49

标签: sql oracle

我必须使用(Oracle)SQL生成200多个单独的提取。查询是相同的,除了where条件。我不允许在java中定义列表并引用它。

只使用SQL,有没有办法让这个过程自动化。

这是我能想象的流程:

  1. 定义数组以存储不同的搜索条件
  2. 阵列没有用尽

    2.1将该数组下标的SQL执行到名称中具有该搜索条件的文件中(以避免覆盖该文件)

  3. 谢谢

1 个答案:

答案 0 :(得分:1)

尝试以下脚本:

用于生成select语句和假脱机的SQL脚本。脚本生成语句,然后在单独的假脱机中运行它们

    set serveroutput on size 1000000
    set verify off
    set feedback off
    spool script.sql

    declare
      v_main_select varchar2(32000):= 'select col1, col2, col3 from table1'; -- your main statement
    begin
      for r_query in (select condition, where_statement from (
                            select 'condition1' condition, 'where id = 10' where_statement from dual -- your condition name and where statements
                            union 
                            select 'condition2', 'where id = 11' from dual
                            -- more unions for each condition....
                            )
                      ) loop
        dbms_output.put_line('spool'||' '||r_query.condition);
        dbms_output.put_line(v_main_select||' '||r_query.where_statement||';');
        dbms_output.put_line('spool off');
      end loop;
    end;
    /

    spool off

    @script.sql