Ausführen einer dynamischen SQL-Anweisung in einem SYS_REFCURSOR

Ist es möglich, eine dynamische SQL-Anweisung in plsql auszuführen und die Ergebnisse in einen sys_refcursor zurückzugeben? Ich habe meinen Versuch so weit eingefügt, aber keine Naht, um zu arbeiten, das ist der Fehler, den ich durch meine Java-App bekomme

ORA-01006: Bindevariable existiert nicht ORA-06512: in "LIVEFIS.ERC_REPORT_PK", Zeile 116 ORA-06512: in Zeile 1

aber das könnte etwas falsches von Java sein, alles scheint gut zu kompilieren, also bin ich mir nicht sicher.

 procedure all_carers_param_dy (pPostcode in carer.postcode%type, pAge Number
                                ,pReport out SYS_REFCURSOR) is
  begin
    declare
      lsql  varchar2(500) :='SELECT c.id FROM carer c, cared_for cf,carer_cared_for ccf '
          ||' where c.id = ccf.carer_id (+)'
          ||' AND cf.id (+) = ccf.cared_for_id';

    begin

     if pPostcode is not null and pAge <= 0 then
        lsql := lsql||' AND c.postcode like ''%''|| upper(pPostcode)||''%''';
      elsif pPostcode is null and pAge > 0 then 
         lsql := lsql||' AND ROUND((MONTHS_BETWEEN(sysdate,c.date_of_birth)/12)) = pAge';
      elsif pPostcode is not null and pAge > 0 then
         lsql := lsql ||' AND ROUND((MONTHS_BETWEEN(sysdate,c.date_of_birth)/12)) = pAge'
                      ||' AND c.postcode like ''%''|| upper(pPostcode)||''%''';
      end if;


        execute immediate lsql
        into pReport;


    end;
  end;

Ich bin neu in plsql und noch neuer in Dynamic SQL, so dass jegliche Hilfe / Vorschläge sehr geschätzt würden.

Danke noch einmal

Jon

Antworten auf die Frage(3)

Ihre Antwort auf die Frage