Kbase P112546: Error (10914) when running a Web Service procedure
Autor |
  Progress Software Corporation - Progress |
Acesso |
  Público |
Publicação |
  13/01/2006 |
|
Status: Unverified
FACT(s) (Environment):
OpenEdge 10.0x
Web Services
SYMPTOM(s):
Getting a SOAP fault when running a Web Service procedure
Error in SOAP parameter: Column <column-name> missing from <table-name> row (10914)
The procedure being called takes a dynamic temp-table (table-handle) as an input parameter
The XML Schema coming in with the data uses the minOccurs="0" attribute on the field elements
CAUSE:
The WSA does not do XML Schema validation against the data in the SOAP request, but it does require that all fields in a temp-table are present for each row instance in the SOAP request.
For static temp-tables, the field definitions in the WSDL have the default XML Schema minOccurs attribute of 1, meaning that the field is required. The field definition also has the nillable attribute of 'true', meaning one can have a field with xsi:nil="true", and the temp-table field on the AppServer will contain the unknown value.
For dynamic (table-handle) input parameters, the WSA requires an XML Schema defining the temp-table as well as the data. The XML Schema coming in with the data might contain a field definition with minOccurs="0" (.Net tends to use this method), but the WSA still requires the field to be in the SOAP request.
FIX:
Use nillable="true" in the <schema> for output dynamic temp-tables to indicate that a dynamic temp-table field can be unknown