Sie sind auf Seite 1von 3

PROCEDURE SP_SAVE_SUPPLIER_DTLS(P_SUPLR_DTLS_XML_IN IN XMLTYPE, P_RESULT_OUT OUT NUMBER, P_MSG_OUT OUT VARCHAR2) IS L_SUPPLIER_CONFIG_ID RAAV_SUPPLIER_CONFIG.

SUPPLIER_CONFIG_ID%TYPE; BEGIN FOR I IN (SELECT (EXTRACTVALUE(VALUE(P), '/Supplier/SupplierId/text()')) SUPPLIERID, (EXTRACTVALUE(VALUE(P), '/Supplier/Scope/text()')) SCOPE, (EXTRACTVALUE(VALUE(P), '/Supplier/GroupId/text()')) GROUPID, (EXTRACTVALUE(VALUE(P), '/Supplier/CreationID/text()')) CREATIONID, (EXTRACTVALUE(VALUE(P), '/Supplier/LastUpdateID/text()')) LASTUPDATEID, (EXTRACTVALUE(VALUE(P), '/Supplier/ApplicationId/text()')) APPLICATIONID, (EXTRACTVALUE(VALUE(P), '/Supplier/ApplicationURL/text()')) APPLICATIONURL, (EXTRACTVALUE(VALUE(P), '/Supplier/CustomerTypeCode/text()')) CUSTOMERTYPECODE, (EXTRACTVALUE(VALUE(P), '/Supplier/EncryptionOption/text()')) ENCRYPTIONOPTION, EXTRACT(COLUMN_VALUE, '/Supplier/Fields/SupplierField') SUPPLIERFIELDS FROM TABLE(XMLSEQUENCE(P_SUPLR_DTLS_XML_IN.EXTRACT('/Supplier'))) P) LOOP IF I.SUPPLIERID = 0 THEN INSERT INTO RAAV_SUPPLIER_CONFIG (SUPPLIER_CONFIG_ID, APP_ID, APP_URL, SCOPE, GROUP_ID, CUST_TYPE_CD, ENCRPTN_IND, CRTN_ID, CRTN_DT_TM, LAST_UPDT_ID, LAST_UPDT_DT_TM) VALUES (SUPPLIER_CONFIG_ID_SEQ.NEXTVAL, I.APPLICATIONID, I.APPLICATIONURL, I.SCOPE, I.GROUPID, I.CUSTOMERTYPECODE, DECODE(I.ENCRYPTIONOPTION, 'PlainText', 'P', 'Encrypted', 'E'), I.CREATIONID, SYSDATE, I.LASTUPDATEID, SYSDATE) RETURNING SUPPLIER_CONFIG_ID INTO L_SUPPLIER_CONFIG_ID; FOR J IN (SELECT EXTRACTVALUE(COLUMN_VALUE, '/SupplierField/FieldId') FIELD_ID, EXTRACTVALUE(COLUMN_VALUE, '/SupplierField/QueryStringName') QUERY_STRNG_NM FROM TABLE(XMLSEQUENCE(I.SUPPLIERFIELDS.EXTRACT('SupplierField')))) LOOP INSERT INTO RAAV_SUPPLIER_CONFIG_ATTRB (SUPPLIER_CONFIG_ID, ATTRB_ID, QUERY_STRING_NAME, CRTN_ID, CRTN_DT_TM, LAST_UPDT_ID, LAST_UPDT_DT_TM) VALUES (L_SUPPLIER_CONFIG_ID,

J.FIELD_ID, J.QUERY_STRNG_NM, I.CREATIONID, SYSDATE, I.LASTUPDATEID, SYSDATE); END LOOP; ELSE UPDATE RAAV_SUPPLIER_CONFIG SET APP_ID = I.APPLICATIONID, APP_URL = I.APPLICATIONURL, SCOPE = I.SCOPE, ENCRPTN_IND = DECODE(I.ENCRYPTIONOPTION, 'PlainText', 'P', 'Encrypted', 'E'), GROUP_ID = I.GROUPID, CUST_TYPE_CD = I.CUSTOMERTYPECODE, LAST_UPDT_ID = I.LASTUPDATEID, LAST_UPDT_DT_TM = SYSDATE WHERE SUPPLIER_CONFIG_ID = I.SUPPLIERID; DELETE FROM RAAV_SUPPLIER_CONFIG_ATTRB WHERE SUPPLIER_CONFIG_ID = I.SUPPLIERID AND ATTRB_ID NOT IN (SELECT EXTRACTVALUE(COLUMN_VALUE, '/SupplierField/FieldId') FIELD_ID FROM TABLE(XMLSEQUENCE(I.SUPPLIERFIELDS.EXTRACT('SupplierField')))); UPDATE RAAV_SUPPLIER_CONFIG_ATTRB A SET A.QUERY_STRING_NAME = (SELECT EXTRACTVALUE(COLUMN_VALUE, '/SupplierField/QueryStringName') QUERY_STRNG_NM FROM TABLE(XMLSEQUENCE(I.SUPPLIERFIELDS.EXTRACT('SupplierField'))) WHERE EXTRACTVALUE(COLUMN_VALUE, '/SupplierField/FieldId') = A.ATTRB_ID) WHERE A.SUPPLIER_CONFIG_ID = I.SUPPLIERID;

INSERT INTO RAAV_SUPPLIER_CONFIG_ATTRB (SUPPLIER_CONFIG_ID, ATTRB_ID, QUERY_STRING_NAME, CRTN_ID, CRTN_DT_TM, LAST_UPDT_ID, LAST_UPDT_DT_TM) (SELECT I.SUPPLIERID, EXTRACTVALUE(COLUMN_VALUE, '/SupplierField/FieldId') FIELD_ID, EXTRACTVALUE(COLUMN_VALUE, '/SupplierField/QueryStringName') QUERY_STRNG_NM, I.CREATIONID, SYSDATE, I.LASTUPDATEID, SYSDATE FROM TABLE(XMLSEQUENCE(I.SUPPLIERFIELDS.EXTRACT('SupplierField'))) X WHERE NOT EXISTS (SELECT 1 FROM RAAV_SUPPLIER_CONFIG_ATTRB B WHERE B.ATTRB_ID =

EXTRACTVALUE(COLUMN_VALUE, '/SupplierField/FieldId') AND B.SUPPLIER_CONFIG_ID = I.SUPPLIERID)); END IF; END LOOP; COMMIT; P_MSG_OUT := NULL; P_RESULT_OUT := 1; EXCEPTION WHEN OTHERS THEN null; END SP_SAVE_SUPPLIER_DTLS;

Das könnte Ihnen auch gefallen