2017-10-18 1 views
-3

Je dois générer 200+ séparer extractions en utilisant (Oracle) SQL. Les requêtes sont identiques à l'exception d'une condition where. Je ne suis pas autorisé à définir la liste dans java et à en faire référence. En utilisant seulement SQL, est-ce que je peux automatiser le processus en utilisant seulement SQL.Plusieurs rapports dans une instruction SQL

C'est un flux que je peux imaginer:

  1. définissiez le tableau pour stocker les différentes conditions de recherche
  2. Alors que le tableau ne soit pas épuisé

    2.1 Exécuter SQL pour que l'indice de tableau dans un fichier ayant cette condition de recherche dans le nom (pour éviter d'écraser le fichier)

nk vous

+2

Utilisez-vous MS SQL Server ou Oracle? Ne pas étiqueter les produits non concernés. – jarlh

+1

Montrez ce que vous avez essayé jusqu'ici .. Il ressemble à une question d'aide au codage pur –

+0

Cherchez-vous quelque chose comme 'where (itemno =: itemno ou: itemno est null) et (product group like: prodgrppattern ou: prodgrppattern est null) ... '? –

Répondre

1

Essayez le script suivant:

script SQL pour vous générer les instructions de sélection et bobines. Les scripts génèrent les instructions, puis les exécutent dans des spools séparés.

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