CURSOR CURSOR_PRPCINSURED_D IS SELECT (SELECT T.VEHICLEID FROM
T_CMCS_S_POLICY_CAR T
WHERE G.POLICYNO=T.POLICYNO) AS VEHICLEID,
G.INSUREDTYPE,
G.INSUREDCODE,
G.INSUREDNAME,
G.INSUREDADDRESS,
G.INSUREDNATURE,
G.INSUREDFLAG,
G.INSUREDIDENTITY,
G.IDENTIFYTYPE,
G.IDENTIFYNUMBER,
G.ACCOUNT,
G.DEPARTUREDATE,
G.DEPARTUREHOUR,
G.POLICYNO,
G.PHONENUMBER,
G.MOBILE,
G.INTG_DATASTATE,
G.SERIALNO
FROM ODSSEND.T_CMCS_PRPCINSURED G WHERE INTG_DATASTATE = 'D';
TYPE T_POLICYINSURED IS TABLE OF T_CMCS_S_VEHICLE_CONTACTS%ROWTYPE INDEX BY BINARY_INTEGER;
V_POLICYINSURED T_POLICYINSURED;
TYPE T_PRPCINSURED IS TABLE OF T_PRPCINSURED_RECORD INDEX BY BINARY_INTEGER;
V_PRPCINSURED T_PRPCINSURED;
uj5u.com熱心網友回復:
begin
V_S_TIME := SYSDATE;
LOOP
FETCH CURSOR_PRPCINSURED BULK COLLECT
INTO V_PRPCINSURED LIMIT 1000;
--下發狀態為 D
IF V_PRPCINSUREDCODE.V_DATASTATE = 'D' THEN
DELETE FROM T_CMCS_S_VEHICLE_CONTACTS G
WHERE G.BUSINO = V_POLICYINSURED(I_INDEX).BUSINO
AND G.SERIALNO = V_PRPCINSUREDCODE.V_SERIALNO;
--下發狀態不為 D
ELSE
/*SELECT COUNT(1)
INTO I_NUMBER
FROM T_CMCS_S_VEHICLE_CONTACTS G
WHERE G.BUSINO = V_POLICYINSURED(I_INDEX).BUSINO
AND G.SERIALNO = V_PRPCINSUREDCODE.V_SERIALNO;*/
SELECT CASE WHEN EXISTS (SELECT 1 FROM T_CMCS_S_VEHICLE_CONTACTS A
WHERE A.BUSINO = V_POLICYINSURED(I_INDEX).BUSINO AND A.SERIALNO = V_PRPCINSUREDCODE.V_SERIALNO)
THEN 1 ELSE 0 END INTO I_NUMBER FROM DUAL;
--存盤區關系人表無該資料
IF I_NUMBER = 0 THEN
INSERT INTO T_CMCS_S_VEHICLE_CONTACTS
VALUES V_POLICYINSURED
(I_INDEX);
I_NUMBER INTEGER;
TYPE T_I_PRPCINSURED IS REF CURSOR;
CURSOR_PRPCINSURED T_I_PRPCINSURED;
TYPE T_PRPCINSURED_RECORD IS RECORD(
V_BUSINO ODSSEND.T_CMCS_PRPCINSURED.POLICYNO%TYPE,
V_SERIALNO ODSSEND.T_CMCS_PRPCINSURED.SERIALNO%TYPE);
V_PRPCINSUREDCODE T_PRPCINSURED_RECORD;
TYPE T_PRPCINSURED IS TABLE OF T_PRPCINSURED_RECORD INDEX BY BINARY_INTEGER;
V_PRPCINSURED T_PRPCINSURED;
begin
-- Test statements here
V_S_TIME := SYSDATE;
--下發狀態為 D
OPEN CURSOR_PRPCINSURED FOR 'SELECT POLICYNO,SERIALNO FROM ODSSEND.T_CMCS_PRPCINSURED WHERE INTG_DATASTATE = ''D''';
LOOP
FETCH CURSOR_PRPCINSURED BULK COLLECT INTO V_PRPCINSURED LIMIT 1000;
FORALL I IN 1..V_PRPCINSURED.COUNT
DELETE FROM T_CMCS_S_VEHICLE_CONTACTS G
WHERE G.BUSINO = V_PRPCINSURED(I).V_BUSINO
AND G.SERIALNO = V_PRPCINSURED(I).V_SERIALNO;
EXIT WHEN CURSOR_PRPCINSURED%NOTFOUND;
COMMIT;
END LOOP;
CLOSE CURSOR_PRPCINSURED;
--下發狀態不為 D
MERGE INTO T_CMCS_S_VEHICLE_CONTACTS A
USING ( SELECT T.VEHICLEID,
G.INSUREDTYPE,
G.INSUREDCODE,
G.INSUREDNAME,
G.INSUREDADDRESS,
G.INSUREDNATURE,
G.INSUREDFLAG,
G.INSUREDIDENTITY,
G.IDENTIFYTYPE,
G.IDENTIFYNUMBER,
G.ACCOUNT,
G.DEPARTUREDATE,
G.DEPARTUREHOUR,
G.POLICYNO,
G.PHONENUMBER,
G.MOBILE,
G.INTG_DATASTATE,
G.SERIALNO
FROM ODSSEND.T_CMCS_PRPCINSURED G
LEFT JOIN T_CMCS_S_POLICY_CAR T
ON G.POLICYNO=T.POLICYNO
WHERE G.INTG_DATASTATE <> 'D') B
ON ( A.BUSINO = B.POLICYNO AND A.SERIALNO = B.SERIALNO)
WHEN MATCHED THEN
UPDATE SET A.INSUREDTYPE = B.INSUREDTYPE,
A.INSUREDCODE = B.INSUREDCODE,
A.INSUREDNAME = B.INSUREDNAME,
A.INSUREDADDRESS = B.INSUREDADDRESS,
A.INSUREDNATURE = B.INSUREDNATURE,
A.INSUREDFLAG = B.INSUREDFLAG,
A.INSUREDIDENTITY = B.INSUREDIDENTITY,
A.IDENTIFYTYPE = B.IDENTIFYTYPE,
A.IDENTIFYNUMBER = B.IDENTIFYNUMBER,
A.ACCOUNT = B.ACCOUNT,
A.DEPARTUREDATE = B.DEPARTUREDATE,
A.DEPARTUREHOUR = B.DEPARTUREHOUR,
A.PHONENUMBER = B.PHONENUMBER,
A.MOBILE = B.MOBILE
WHEN NOT MATCHED THEN
INSERT VALUES (
SEQ_S_VEHICLE_CONTACTS.NEXTVAL,
B.VEHICLEID,
B.INSUREDTYPE,
B.INSUREDCODE,
B.INSUREDNAME,
B.INSUREDADDRESS,
B.INSUREDNATURE,
B.INSUREDFLAG,
B.INSUREDIDENTITY,
B.IDENTIFYTYPE,
B.IDENTIFYNUMBER,
B.ACCOUNT,
B.DEPARTUREDATE,
B.DEPARTUREHOUR,
'',
'',
'',
'2',
B.POLICYNO,
'0',
B.PHONENUMBER,
B.MOBILE,
B.SERIALNO);
COMMIT;
EXCEPTION
WHEN OTHERS THEN
V_ERRMESSAGE := SUBSTR(SQLERRM, 1, 100); --回傳錯誤資訊
SP_DOLOG('P_I_POLICY-T_CMCS_S_VEHICLE_CONTACTS','',V_ERRMESSAGE);
**桔妹導讀:**深耕人工智能領域,致力于探索AI讓出行更美好的滴滴AI Labs再次斬獲國際大獎,這次獲獎的專案是什么呢?一起來看看詳細報道吧! 近日,由國際計算語言學協會ACL(The Association for Computational Linguistics)舉辦的世界最具影響力的機器 ......
我們經常在資料庫中使用 LIKE 運算子來完成對資料的模糊搜索,LIKE 運算子用于在 WHERE 子句中搜索列中的指定模式。 如果需要查找客戶表中所有姓氏是“張”的資料,可以使用下面的 SQL 陳述句: SELECT * FROM Customer WHERE Name LIKE '張%' 如果需要 ......
關于MySQL的二進制日志(binlog),我們都知道二進制日志(binlog)非常重要,尤其當你需要point to point災難恢復的時侯,所以我們要對其進行備份。關于二進制日志(binlog)的備份,可以基于flush logs方式先切換binlog,然后拷貝&壓縮到到遠程服務器或本地服務器 ......