试试这样:
PROCEDURE ADD_CAMPAIGN (
configXML IN CLOB
) IS
vn_CAMPAIGNID number;
BEGIN
vn_CAMPAIGNID := CAMPAIGN_SEQUENCE.NEXTVAL;
INSERT INTO CAMPAIGN_INFO (campaign_id,name,start_date,period,handset_statu,bscs_service_id)
VALUES(vn_CAMPAIGNID ,
XMLTYPE(configXML).EXTRACT('/campaign/campaignInfo/name/text()').getStringVal() ,
TO_DATE(XMLTYPE(configXML).EXTRACT('/campaign/campaignInfo/startDate/text()').getStringVal()) ,
XMLTYPE(configXML).EXTRACT('/campaign/campaignInfo/period/text()').getNumberVal() ,
XMLTYPE(configXML).EXTRACT('/campaign/campaignInfo/handsetStatu/text()').getStringVal(),
XMLTYPE(configXML).EXTRACT('/campaign/campaignInfo/bscsServiceID/text()').getNumberVal()
);
INSERT INTO PROMO_INFO(CAMPAIGN_ID,NAME)
VALUES(vn_CAMPAIGNID,
XMLTYPE(configXML).EXTRACT('/campaign/campaignInfo/promoName/text()').getStringVal());
INSERT INTO UTILITY_INFO(CAMPAIGN_ID,NAME)
VALUES(vn_CAMPAIGNID,
XMLTYPE(configXML).EXTRACT('/campaign/campaignInfo/utilityName/text()').getStringVal()) ;
INSERT INTO FREE_UNIT_INFO(CAMPAIGN_ID,NAME)
VALUES(vn_CAMPAIGNID,
XMLTYPE(configXML).EXTRACT('/campaign/campaignInfo/packageName/text()').getStringVal()) ;
INSERT INTO HANDSET_INFO(HANDSET_ID,NAME,CAMPAIGN_ID)
VALUES(HANDSET_SEQUENCE.NEXTVAL,
XMLTYPE(configXML).EXTRACT('/campaign/campaignInfo/handsetName/text()').getStringVal(),
vn_CAMPAIGNID);
END ADD_CAMPAIGN;