Можно ли выполнить динамический кусок sql внутри plsql и вернуть результаты в sys_refcursor? Я вложил свою попытку в soo далеко, но dosnt шов, чтобы работать, это ошибка, которую я получаю через свое приложение java.
ORA-01006: привязка переменной не существует ORA-06512: при "LIVEFIS.ERC_REPORT_PK", строка 116 ORA-06512: в строке 1
но это может быть что-то неправильно истолкованное java, все швы для компиляции штрафа soo im not sure.
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 новый для plsql и даже более новый для динамического sql soo любая помощь/предложения будет значительно оценена.
Еще раз спасибо
Джон