查询丢失数据
我在视图里调用了函数,如果用sql语句在pl/sql中执行,RECEIPTEXESMEMO列全部都有值,没有问题;但是通过程序查询时,RECEIPTEXESMEMO列在第五行以后的数据丢失了,全部为null值。
视图:
CREATE OR REPLACE VIEW V_FEE_RECEIPT AS
SELECT RECEIPT.RECEIPTINDEXID,
RECEIPT.RECEIPTCUSTOMERID,
FEs.f_Getreceiptbookingid(RECEIPT.RECEIPTINDEXID) AS RECEIPTEXESMEMO
FROM FES.T_FEE_RECEIPT RECEIPT
LEFT JOIN FES.T_FEE_INVOICE INVOICE ON
INVOICE.INVOICEINDEXID = RECEIPT.INVOICEINDEXID
函数:
create or replace function F_GETRECEIPTBOOKINGID( receiptindexid in varchar2 )
return varchar2
is
str_list varchar2(4000) default null;
str varchar2(20) default null;
begin
for x in ( SELECT ER.Bookingno
FROM FES.T_FEE_EXESRECEIPT ER
WHERE ER.RECEIPTID = receiptindexid ) loop
if not x.bookingno is null then
if INSTR(str_list, x.bookingno, 1, 1)='0' or INSTR(str_list, x.bookingno, 1, 1) is null then
str_list := str_list || str || to_char(x.bookingno);
str := ', ';
end if;
end if;
end loop;
return str_list;
end;
视图:
CREATE OR REPLACE VIEW V_FEE_RECEIPT AS
SELECT RECEIPT.RECEIPTINDEXID,
RECEIPT.RECEIPTCUSTOMERID,
FEs.f_Getreceiptbookingid(RECEIPT.RECEIPTINDEXID) AS RECEIPTEXESMEMO
FROM FES.T_FEE_RECEIPT RECEIPT
LEFT JOIN FES.T_FEE_INVOICE INVOICE ON
INVOICE.INVOICEINDEXID = RECEIPT.INVOICEINDEXID
函数:
create or replace function F_GETRECEIPTBOOKINGID( receiptindexid in varchar2 )
return varchar2
is
str_list varchar2(4000) default null;
str varchar2(20) default null;
begin
for x in ( SELECT ER.Bookingno
FROM FES.T_FEE_EXESRECEIPT ER
WHERE ER.RECEIPTID = receiptindexid ) loop
if not x.bookingno is null then
if INSTR(str_list, x.bookingno, 1, 1)='0' or INSTR(str_list, x.bookingno, 1, 1) is null then
str_list := str_list || str || to_char(x.bookingno);
str := ', ';
end if;
end if;
end loop;
return str_list;
end;
...全文


