|
bhushanhegde
Starting Member
14 Posts |
Posted - 2008-11-27 : 05:38:03
|
| Hi,Once again I need to convert a Oracle procedure into sql server 2005.My procedure has Curso and also xml codes.Please help me to convert this procedure.Procedure is as follows:CREATE OR REPLACE PROCEDURE fm_save_profilemast(STRXML IN LONG,P_PMPK IN NUMBER,P_TYPE IN VARCHAR2, PKEY OUT NUMBER)AS xml XMLType; v_pmpk NUMBER; change_by VARCHAR2(20); v2 NUMBER; lngstr LONG;CURSOR Cur_synt_dtls is SELECT ldr_syntx_dtls_pkey FROM fm_profile_cfile WHERE sub_line_seq=0;BEGIN lngstr:= REPLACE(strxml,'\',''); -- removing '\' from xml file XML:=XMLTYPE(lngstr); IF P_TYPE='ADD' THEN -- IF ADDING NEW PROFILE SELECT FM_PKEY_PROFILEMAST.NEXTVAL INTO V_PMPK FROM DUAL; ELSIF P_TYPE='EDIT' THEN -- IF UPDATING EXISTED PROFILE V_PMPK :=P_PMPK; DELETE from fm_profile_cfile a WHERE a.profilemaster_pkey=V_PMPK; DELETE from fm_profiledet b WHERE b.profilemaster_pkey=V_PMPK; DELETE FROM fm_profilemast a WHERE a.profilemaster_pkey=V_PMPK; DELETE FROM fm_condition a WHERE a.profilemaster_pkey=V_PMPK; END IF; SELECT extract(xml, 'ROOT/CHANGE/@CHANGEBY').getstringval() INTO CHANGE_BY FROM DUAL; INSERT ALL WHEN existsnode (xml, '/PROFILE') = 1 THEN INTO FM_PROFILEMAST --INSERTING INTO PROFILEMASTER VALUES (V_PMPK, extract(xml, 'PROFILE/@DB_MSTR_PKEY').getnumberval(), extract(xml, 'PROFILE/@PROFILE_NAME').getstringval(), extract(xml, 'PROFILE/@FILE_TYPE').getstringval(), extract(xml, 'PROFILE/@DELIMETER').getstringval(), extract(xml, 'PROFILE/@PRE_PROCESSOR').getstringval(), extract(xml, 'PROFILE/@POST_PROCESSOR').getstringval(), extract(xml, 'PROFILE/@PRE_PROCESSOR_TYPE').getstringval(), extract(xml, 'PROFILE/@POST_PROCESSOR_TYPE').getstringval(), extract(xml, 'PROFILE/@GROUPID').getstringval(), DEFAULT, change_by, DEFAULT, DEFAULT, extract(xml, 'PROFILE/@PROFILE_TYPE').getnumberval(), extract(xml, 'PROFILE/@PROFILE_MODE').getstringval(), extract(xml, 'PROFILE/@FILE_MODE').getstringval()) WHEN existsnode (xml, 'OPTIONS') = 1 THEN INTO fm_profile_cfile --INSERTING INTO PROFILE CFILE VALUES (v_pmpk, extract(xml, '/OPTIONS/@LDR_SYNTX_DTLS_PKEY').getstringval(), extract(xml, '/OPTIONS/@VAL').getstringval(), change_by, DEFAULT, fm_pkey_opt_ldr.nextval, 0, DEFAULT, DEFAULT) WHEN existsnode (xml, 'WHEN_CLAUSE') = 1 THEN INTO FM_CONDITION --INSERTING INTO CONDITION TABLE VALUES (V_PMPK, extract(xml, '/WHEN_CLAUSE/@TARGET_SOURCE_TABLE').getstringval(), --replace(extract(xml, '/WHEN_CLAUSE/@WHEN_CLAUSE').getstringval(),';',''''), --replace(extract(xml, '/WHEN_CLAUSE/@WHEN_CLAUSE').getstringval(),''',''''), extract(xml, '/WHEN_CLAUSE/@WHEN_CLAUSE').getstringval(), DEFAULT, change_by, DEFAULT, DEFAULT) SELECT column_value AS xml FROM table (SELECT xmlsequence(extract(xml, '/ROOT/*')) FROM dual); -- To update special charecters into symbol UPDATE FM_PROFILEMAST SET PRE_PROCESSOR= REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(PRE_PROCESSOR,'<','<'),'>','>'),'"','"'),'&','&'),''','''') WHERE PROFILEMASTER_PKEY=V_PMPK; UPDATE FM_PROFILEMAST SET POST_PROCESSOR= REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(POST_PROCESSOR,'<','<'),'>','>'),'"','"'),'&','&'),''','''') WHERE PROFILEMASTER_PKEY=V_PMPK; UPDATE FM_CONDITION SET WHEN_CLAUSE= REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(WHEN_CLAUSE,'<','<'),'>','>'),'"','"'),'&','&'),''','''') WHERE PROFILEMASTER_PKEY=V_PMPK; UPDATE FM_PROFILE_CFILE SET VAL= REPLACE(REPLACE(VAL,'"','"'),''','''') WHERE PROFILEMASTER_PKEY=V_PMPK; FOR v2 IN Cur_synt_dtls -- Opening Cursor LOOP UPDATE fm_profile_cfile -- Updates Sub_Line_Seq column fm_ldr_syntx_dtls SET sub_line_seq= (select sub_line_seq FROM fm_ldr_syntx_dtls WHERE syntx_dtls_pkey=v2.ldr_syntx_dtls_pkey) WHERE sub_line_seq=0 AND ldr_syntx_dtls_pkey=v2.ldr_syntx_dtls_pkey ; END LOOP; -- Closing the Cursor PKEY:=V_PMPK; --Returning Pkey through OUT Parameter COMMIT; -- Commiting all the changes EXCEPTION WHEN OTHERS THEN ROLLBACK; --Rollback SYS_DB_LOG_ERROR ('FM_SAVE_PROFILEMAST',P_PMPK || ';' || P_TYPE,SQLERRM); RAISE_APPLICATION_ERROR(-20000, SQLERRM);END fm_save_profilemast;thanks and regardsbhushan |
|