è possibile eseguire una parte dinamica di sql in plsql e restituire i risultati in un sys_refcursor? Ho incollato il mio tentativo soo, ma cucitura dosnt di lavorare, questo è il im errore di ottenere throught mio java appEsecuzione di un'istruzione SQL dinamica in un SYS_REFCURSOR
ORA-01006: variabile di legatura non esiste ORA-06512: alla "LIVEFIS. ERC_REPORT_PK", linea 116 ORA-06512: alla linea 1
ma che potrebbe essere frainteso somthing da Java, tutto cuciture per compilare bene soo im non sicuro.
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;
Im nuovo a plsql e ancora più recente per SQL dinamico soo qualsiasi aiuto/suggerimento sarebbe molto apprezzata.
Grazie ancora
Jon
Tecnicamente, se il SELECT restituisce un tipo di dati del cursore è possibile selezionare in un cursore ref (che esegue immediato o uno SQL statica). Ma sei corretto nel fatto che questa selezione sta restituendo un valore di identificazione, non un cursore di riferimento. –