Referenční cursor v PL SQL v ORACLE databázi

Sekce: Programování / Oracle   Datum: 24.11.2015, Autor:  MrK, ID: 5, přečteno 933x

Jak vytvořit cursor dynamicky skládáním stringů?

Procedure Vyhledano(xID in varchar2, xNaze in varchar2) IS
  TYPE XCUR IS REF CURSOR;
  cpt  XCUR;

  xSelectPrikaz varchar2(32000);
  xIDV varchar2(500);
  xNazev varchar2(500);


  begin
    htp.p('<html><body>');
    xSelectPrikaz:='SELECT id, naze from dbtable where id in (' || xID || ') and naze like ''%'|| xNaze || '%'''; 
     
  
    htp.p('SELECT:  ' || xSelectPrikaz|| '<br><br>');
    htp.p('<table>');
    htp.p('<tr>');
    htp.p('<td>ID</td>');
    htp.p('<td>Název</td>');
    
    htp.p('</tr>');
    OPEN cpt FOR xSelectPrikaz;
    loop
      FETCH cpt INTO xIDPrip,xName,xDatR,xCSpis;
      exit when cpt%notfound;
    htp.p('<tr><td>'||xIDV || '</td><td>' || xNazev || '</td></tr>' );             
    end loop;
    CLOSE cpt;
    
    exception
        when others then
                  HTP.PREOPEN;
                  htp.p(DBMS_UTILITY.FORMAT_ERROR_STACK);
                  htp.p(DBMS_UTILITY.FORMAT_ERROR_BACKTRACE);
                  htp.preclose;
  end;

Do parametru xID pak může přijít např text "12,13,14,15"

Llze takto složit kompletní Select včetně názvů tabulek, funkcí aj.