Я задал этот вопрос относительно давно (пару месяцев назад), а затем, когда я не получил ответ, который работал на меня, я вернулся к отправке нескольких таблиц данных и «повторной сборке» их на стороне приложения. так, как это должно быть обработано. Однако я нашел ответ на этот вопрос и должен был поделиться им с сообществом здесь. Поддержка Oracle для XML, начиная с версии 9, абсолютно невероятна, и, в частности, пакет DBMS_XMLQuery можно использовать для решения указанной выше проблемы, анализируя и отправляя операторы select обратно в виде набора данных XML, который может быть легко преобразован на стороне приложения с помощью .NET без особых усилий. Вот пример кода из тестового хранимого процесса, который я недавно написал:
SELECT COMPANYID, COMPANYNAME,
DBMS_XMLQuery.GetXML(
'SELECT * FROM ORDERS WHERE CompanyID = '
|| COMPANY.COMPANYID )
OrderRecords
FROM COMPANY
WHERE lower(COMPANYNAME) LIKE '%shawn%';
Это вернет что-то вроде следующего (просто перетащите OrderRecords в строку и перейдите в DataTable:
CompanyID | CompanyName | OrderRecords
---------------------------------------------------------------------------
1051 | Shawns Company | XML String Returned, listed below
<?xml version = '1.0'?>
<ROWSET>
<ROW num="1">
<ORDERID>500020</ORDERID>
<NOTES>Test Note</NOTES>
<!-- Additional fields cut out Not necessary for example -->
</ROW>
<ROW num="2">
<ORDERID>500021</ORDERID>
<NOTES>Test Note 2</NOTES>
<!-- Additional fields cut out Not necessary for example -->
</ROW>
<ROW num="3">
<ORDERID>500280</ORDERID>
<NOTES>notes test</NOTES>
<!-- Additional fields cut out Not necessary for example -->
</ROW>
<!-- Additional Rows cut out Not necessary for example -->
</ROWSET>
В пакете DBMS_XMLQuery есть еще много всего, кроме этой очень крутой функции. Это определенно стоит проверить.