Hi Jeremy
This issue has been troubling quiet a bit. The following are the queries I am using.
For insert:
/*==================== insertUpdateLoadData ====================*/
PROCEDURE insertUpdateLoadData(
iId NUMBER
,iPurordid NUMBER
,iSplrdid NUMBER
,iMatgroupid NUMBER
,iHaulerId NUMBER
,iTruckid NUMBER
,iDriverid NUMBER
,iInvoicenum VARCHAR2
,iChangedby VARCHAR2
,Ret OUT ZNCursor
) IS
x NUMBER;
err_code VARCHAR2(15);
err_msg VARCHAR2(200);
BEGIN
IF iId > 0 THEN
BEGIN
UPDATE tbl_matrcpt_loaddata
SET inuse='N'
WHERE id=iId;
INSERT INTO tbl_matrcpt_loaddata(
id
,purordid
,splrid
,matgroupid
,haulerId
,truckid
,driverid
,vouchernum
,invoicenum
,changedby
,changedon
,inuse
)
VALUES(
iId
,iPurordid
,iSplrdid
,iMatgroupid
,iHaulerId
,iTruckid
,iDriverid
,TO_CHAR(SYSDATE, 'YYYYMMDDHH24MI')
,UPPER(iInvoicenum)
,iChangedby
,SYSDATE
,'Y'
);
COMMIT;
END;
ELSE
BEGIN
INSERT INTO tbl_matrcpt_loaddata(
id
,purordid
,splrid
,matgroupid
,haulerId
,truckid
,driverid
,vouchernum
,invoicenum
,changedby
,changedon
,inuse
)
VALUES(
seq_matrcpt_loaddataid.nextval
,iPurordid
,iSplrdid
,iMatgroupid
,iHaulerId
,iTruckid
,iDriverid
,TO_CHAR(SYSDATE, 'YYYYMMDDHH24MI')
,UPPER(iInvoicenum)
,iChangedby
,SYSDATE
,'Y'
);
x:=sql%rowcount;
COMMIT;
OPEN Ret FOR
SELECT 'Success' AS Status, to_char(x)||' record(s) added' AS Message FROM dual;
END;
END IF;
EXCEPTION WHEN OTHERS THEN
err_code := SQLCODE;
err_msg := SUBSTR(SQLERRM, 1, 200);
OPEN Ret FOR
SELECT 'Error' AS Status, err_code+err_msg AS Message FROM dual;
END insertUpdateLoadData;
/*================= End of insertUpdateLoadData ================*/
For select
SELECT
a.id
,a.purordid
,a.splrid
,b.ponum
,a.matgroupid
,d.grpname
,a.haulerId
,a.truckid
,a.driverid
,a.vouchernum
,a.invoicenum
,a.isfrstwt
,e.weight as fstwt
,e.remark as fstrem
,a.issecwt
,f.weight as secwt
,f.remark as secrem
,abs(coalesce(e.weight,0)-coalesce(f.weight,0)) as netwt
,a.ismatwtassn
,a.isgrnpstd
,matrcpt_isscrapbypo(b.id) as isscrap
FROM vw_matrcpt_loaddata a
LEFT JOIN vw_matrcpt_purord b ON a.purordid=b.id
LEFT JOIN vw_matrcpt_matgroup d ON a.matgroupid=d.id
LEFT JOIN vw_matrcpt_weight e ON a.id=e.loadid AND e.weighttyp=1
LEFT JOIN vw_matrcpt_weight f ON a.id=f.loadid AND f.weighttyp=2
WHERE a.changedon between to_date('[Param.1]','YYYY-MM-DD HH24.MI.SS')
and to_date('[Param.2]','YYYY-MM-DD HH24.MI.SS')
AND a.isfrstwt like '[Param.3]'
AND a.issecwt like '[Param.4]'
AND a.isgrnpstd like '[Param.5]'
ORDER BY a.changedon desc
The insert from the query above takes about 5 mins to reflect changes when results are queried. A select in the sqlplus returns the inserted row instantly.
Though a similar insert in the weight table gives the right output instantly.
In both cases the select query is the same. The query templates are copies in both the insert cases.
Regards
Maaz