I have a Asp.NET Web Application talking to an 10G database using ODP.NET Provider. I have converted a DataTable to XML and am passing it to a stored procedure as follows but when debugging in SQLdeveloper it never steps into the for loop to insert the rows. Any help would be greatly appreciated.
sXML="<DocumentElement>
<ORDERSETDIAGNOSIS>
<ORDER_SET_DIAG_ID>0</ORDER_SET_DIAG_ID>
<ORDER_SET_ID>0</ORDER_SET_ID>
<DIAGNOSIS_ID>10357</DIAGNOSIS_ID>
<DESCRIPTION>Knee pain, left anterior(719.46,M25.562)</DESCRIPTION>
<LEXICAL_CODE>21647775</LEXICAL_CODE>
<IMO_DESCRIPTION>Knee pain, left anterior</IMO_DESCRIPTION>
<ICD9_CODE>719.46</ICD9_CODE>
<ICD10_CODE>M25.562</ICD10_CODE>
<SNOMED_CODE>239733006</SNOMED_CODE>
</ORDERSETDIAGNOSIS>
</DocumentElement>"
dbObj.Parameters.Add(Ora_db.CreateOracleIDParam("IN_ORDER_SET_ID", OrderSetId))
dbObj.Parameters.Add(Ora_db.CreateOracleIDParam("IN_MODIFIED_BY", ModifiedBy))
dbObj.Parameters.Add(Ora_db.CreateOracleVarcharParam("IN_DIAGNOSISXML", sXML, 4000))
dbObj.CreateCommand(CTSettings.OrdersPackageDBName & ".ADDORDERSETDIAGNOSIS")
intRetValue = dbObj.ExecCommandAffectedRows()
PROCEDURE ADDORDERSETDIAGNOSIS(
IN_ORDER_SET_ID IN ORDER_SET.ORDER_SET_ID%TYPE DEFAULT NULL,
IN_MODIFIED_BY IN ORDER_SET.MODIFIED_BY%TYPE DEFAULT NULL,
IN_DIAGNOSISXML VARCHAR2)
AS
X SYS.XMLTYPE;
BEGIN
X := SYS.XMLTYPE.CREATEXML(IN_DIAGNOSISXML);
FOR DIAG IN (
SELECT EXTRACTVALUE(VALUE(OSD),'/ORDERSETDIAGNOSIS/DIAGNOSIS_ID/TEXT()') AS DIAGNOSIS_ID,
EXTRACTVALUE(VALUE(OSD),'/ORDERSETDIAGNOSIS/LEXICAL_CODE/TEXT()') AS LEXICAL_CODE,
EXTRACTVALUE(VALUE(OSD),'/ORDERSETDIAGNOSIS/IMO_DESCRIPTION/TEXT()') AS IMO_DESCRIPTION,
EXTRACTVALUE(VALUE(OSD),'/ORDERSETDIAGNOSIS/ICD9_CODE/TEXT()') AS ICD9_CODE,
EXTRACTVALUE(VALUE(OSD),'/ORDERSETDIAGNOSIS/ICD10_CODE/TEXT()') AS ICD10_CODE,
EXTRACTVALUE(VALUE(OSD),'/ORDERSETDIAGNOSIS/SNOMED_CODE/TEXT()') AS SNOMED_CODE
FROM TABLE(XMLSEQUENCE(EXTRACT(X,'/DOCUMENTELEMENT/ORDERSETDIAGNOSIS'))) OSD
)
LOOP
INSERT INTO ORDER_SET_DIAGNOSIS(
ORDER_SET_DIAG_ID,
ORDER_SET_ID,
DIAGNOSIS_ID,
TIMESTAMP,
MODIFIED_BY,
LEXICAL_CODE,
IMO_DESCRIPTION,
ICD9_CODE,
ICD10_CODE,
SNOMED_CODE)
VALUES(
OSDIAG_SEQ.NEXTVAL,
IN_ORDER_SET_ID,
DIAG.DIAGNOSIS_ID,
SYSDATE,
IN_MODIFIED_BY,
DIAG.LEXICAL_CODE,
DIAG.IMO_DESCRIPTION,
DIAG.ICD9_CODE,
DIAG.ICD10_CODE,
DIAG.SNOMED_CODE);
END LOOP;
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line(SQLERRM);
RAISE_APPLICATION_ERROR(-20001, SQLERRM);
END;