CREATE OR REPLACE PROCEDURE ECC_test.SP_TST AS
VV_A VARCHAR(300);
VV_B VARCHAR(300);
BEGIN
FOR I_CUR IN (SELECT * FROM ecc_test.special_com_imagine_TST T)
LOOP
VV_A := I_CUR.ORDER_ID;
VV_B:= I_CUR.SPECIAL_COM;
begin
INSERT INTO ecc_test.special_com_imagine_TST1
(
ORDER_ID ,
PRODFAM_CODE ,
PRODFAM_TEXT ,
CFGITEM_CODE ,
SPECIAL_COM ,
CREATE_DATE ,
USEFUL_DATE ,
CFGITEM_TEXT ,
ACTIVE_FLAG ,
GUID ,
KEY_MATERIAL ,
KEY_MATERIAL_DES ,
PAY_TIME ,
PAY_NOT_SATISFY_
)
VALUES(
I_CUR.ORDER_ID ,
I_CUR.PRODFAM_CODE ,
I_CUR.PRODFAM_TEXT ,
I_CUR.CFGITEM_CODE ,
I_CUR.SPECIAL_COM ,
CASE WHEN I_CUR.CREATE_DATE IS NOT NULL THEN TO_DATE(TRIM(I_CUR.CREATE_DATE),'yyyy-mm-DD') END ,
CASE WHEN I_CUR.USEFUL_DATE IS NOT NULL THEN TO_DATE(TRIM(I_CUR.USEFUL_DATE),'yyyy-mm-DD') END ,
I_CUR.CFGITEM_TEXT ,
I_CUR.ACTIVE_FLAG ,
I_CUR.GUID ,
I_CUR.KEY_MATERIAL ,
I_CUR.KEY_MATERIAL_DES ,
I_CUR.PAY_TIME ,
I_CUR.PAY_NOT_SATISFY_
);
COMMIT;
exception
WHEN OTHERS THEN
insert into ecc_test.tb_tst_123
(ORDER_ID,
SPECIAL_COMM)
values(VV_A,VV_B);
commit;
end ;
END LOOP;
EXCEPTION
WHEN OTHERS THEN
insert into ecc_test.tb_tst_123
(ORDER_ID,
SPECIAL_COMM)
values(VV_A,VV_B);
commit;
END;
遊標
在sql函數或者存儲過程編程中,對數據一行一行地進行操作,遊標的操作自然離不了,下面爲學習的遊標練習
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.