là nó có thể thực hiện một phần động của sql trong plsql và trả về kết quả vào một sys_refcursor? Tôi đã dán cố gắng của tôi soo xa, nhưng đường may dosnt được làm việc, đây là im lỗi nhận Xuyên ứng dụng java của tôiThực hiện một câu lệnh sql động vào SYS_REFCURSOR
ORA-01.006: biến ràng buộc không tồn tại ORA-06.512: tại "LIVEFIS. ERC_REPORT_PK", dòng 116 ORA-06.512: tại dòng 1
nhưng điều đó có thể là somthing hiểu sai bởi java, tất cả mọi thứ vỉa để biên dịch tốt soo im không chắc chắn.
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 new to plsql và thậm chí mới hơn đến sql soo động bất kỳ trợ giúp/đề xuất nào sẽ được đánh giá rất nhiều.
Cảm ơn lần nữa
Jon
Về mặt kỹ thuật, nếu SELECT trả về kiểu dữ liệu con trỏ, bạn có thể chọn nó thành con trỏ ref (thực thi ngay lập tức hoặc sql tĩnh). Nhưng bạn là chính xác trong đó lựa chọn này là trả lại một giá trị id, không phải là một con trỏ ref. –