hồ sơ giám định
SQL Sprint
08/05/2025
create or replace procedure PBH_BT_GD_HS_LKE(
b_ma_dvi varchar2,b_nsd varchar2,b_pas varchar2,b_oraIn clob,b_oraOut out clob)
AS
b_loi varchar2(100); b_lenh varchar2(2000);
b_so_hs_bt varchar2(20); b_ngay_ht number; b_klk varchar2(1); b_tu number; b_den number; b_phong varchar2(10);
b_dong number:=0; cs_lke clob:='';
begin
-- Nam - Liet ke theo ngay
b_loi:=FHT_MA_NSD_KTRA(b_ma_dvi,b_nsd,b_pas,'BH','BT','NX');
if b_loi is not null then raise_application_error(-20105,b_loi); end if;
b_lenh:=FKH_JS_LENH('so_hs_bt,ngay_ht,klk,tu,den');
EXECUTE IMMEDIATE b_lenh into b_so_hs_bt,b_ngay_ht,b_klk,b_tu,b_den using b_oraIn;
if b_klk='N' then
select count(*) into b_dong from bh_bt_gd_hs where ma_dvi=b_ma_dvi and nsd=b_nsd and ngay_ht=b_ngay_ht;
if b_dong<>0 then
PKH_LKE_TRANG(b_dong,b_tu,b_den);
select JSON_ARRAYAGG(json_object(so_hs,ma_dvi,so_id) returning clob) into cs_lke from
(select so_hs,ma_dvi,so_id,rownum sott from bh_bt_gd_hs where
ma_dvi=b_ma_dvi and ngay_ht=b_ngay_ht and nsd=b_nsd order by so_id desc)
where sott between b_tu and b_den;
end if;
elsif b_klk='P' then
b_phong:=FHT_MA_NSD_PHONG(b_ma_dvi,b_nsd);
select count(*) into b_dong from bh_bt_gd_hs where ma_dvi=b_ma_dvi and ngay_ht=b_ngay_ht and phong=b_phong;
if b_dong<>0 then
PKH_LKE_TRANG(b_dong,b_tu,b_den);
select JSON_ARRAYAGG(json_object(so_hs,ma_dvi,so_id) returning clob) into cs_lke from
(select so_hs,ma_dvi,so_id,rownum sott from bh_bt_gd_hs where
ma_dvi=b_ma_dvi and ngay_ht=b_ngay_ht and phong=b_phong order by so_id desc)
where sott between b_tu and b_den;
end if;
elsif trim(b_so_hs_bt) is not null then
select count(*) into b_dong from bh_bt_gd_hs where ma_dvi=b_ma_dvi and so_id_bt=b_so_hs_bt;
if b_dong<>0 then
PKH_LKE_TRANG(b_dong,b_tu,b_den);
select JSON_ARRAYAGG(json_object(so_hs,ma_dvi,so_id) returning clob) into cs_lke from
(select so_hs,ma_dvi,so_id,rownum sott from bh_bt_gd_hs where ma_dvi=b_ma_dvi and so_id_bt=b_so_hs_bt order by ngay_ht desc)
where sott between b_tu and b_den;
end if;
end if;
select json_object('dong' value b_dong,'cs_lke' value cs_lke returning clob) into b_oraOut from dual;
exception when others then if b_loi is null then raise PROGRAM_ERROR; else raise_application_error(-20105,b_loi); end if;
end;
/
create or replace procedure PBH_BT_GD_HS_LKE_ID(
b_ma_dvi varchar2,b_nsd varchar2,b_pas varchar2,b_oraIn clob,b_oraOut out clob)
AS
b_loi varchar2(2000); b_lenh varchar2(2000); b_phong varchar2(10); b_tu number; b_den number;
b_so_id number; b_ngay_ht number; b_klk varchar2(1); b_trangkt number;
b_trang number; b_dong number; cs_lke clob:='';
begin
-- Nam - Xem
b_loi:=FHT_MA_NSD_KTRA(b_ma_dvi,b_nsd,b_pas,'BH','TT','NX');
if b_loi is not null then raise PROGRAM_ERROR; end if;
b_lenh:=FKH_JS_LENH('so_id,ngay_ht,klk,trangkt');
EXECUTE IMMEDIATE b_lenh into b_so_id,b_ngay_ht,b_klk,b_trangKt using b_oraIn;
if b_klk ='N' then
select count(*) into b_dong from bh_bt_gd_hs where ma_dvi=b_ma_dvi and ngay_ht=b_ngay_ht and nsd=b_nsd;
select nvl(min(sott),b_dong) into b_tu from (select so_id,rownum sott from bh_bt_gd_hs where
ma_dvi=b_ma_dvi and ngay_ht=b_ngay_ht and nsd=b_nsd order by so_id desc) where so_id<=b_so_id;
PKH_LKE_VTRI(b_trangkt,b_tu,b_den,b_trang);
select JSON_ARRAYAGG(json_object(so_id,ma_dvi,so_hs) returning clob) into cs_lke from
(select so_id,ma_dvi,so_hs,rownum sott from bh_bt_gd_hs where
ma_dvi=b_ma_dvi and ngay_ht=b_ngay_ht and nsd=b_nsd order by so_id desc)
where sott between b_tu and b_den;
elsif b_klk='P' then
b_phong:=FHT_MA_NSD_PHONG(b_ma_dvi,b_nsd);
select count(*) into b_dong from bh_bt_gd_hs where ma_dvi=b_ma_dvi and ngay_ht=b_ngay_ht and phong=b_phong;
select nvl(min(sott),b_dong) into b_tu from (select so_id,ma_dvi,so_hs,rownum sott from bh_bt_gd_hs where
ma_dvi=b_ma_dvi and ngay_ht=b_ngay_ht and phong=b_phong order by so_id desc) where so_id<=b_so_id;
PKH_LKE_VTRI(b_trangkt,b_tu,b_den,b_trang);
select JSON_ARRAYAGG(json_object(so_id,ma_dvi,so_hs) returning clob) into cs_lke from
(select so_id,ma_dvi,so_hs,rownum sott from bh_bt_gd_hs where
ma_dvi=b_ma_dvi and ngay_ht=b_ngay_ht and phong=b_phong order by so_id desc)
where sott between b_tu and b_den;
end if;
select json_object('trang' value b_trang,'dong' value b_dong,'cs_lke' value cs_lke returning clob) into b_oraOut from dual;
exception when others then if b_loi is null then raise PROGRAM_ERROR; else raise_application_error(-20105,b_loi); end if;
end;