Hallo,
ich übergebe einem OracleDataAdapter ein SQL-Statement und eine OracleConnection:
var query = "SELECT * FROM Products"
var oracleDataAdapter = new OracleDataAdapter(query, connection);
In dem query-String darf ich am Ende kein Semikolon setzen, da ansonsten der Fehler "ORA-00911: invalid character" erscheint.
Wird das Semikolon nicht gesetzt, dann funktioniert alles bestens.
Nun will ich aber das DataSet mit mehreren Tabellen füllen und eine sogenannte Batch-Abfrage absetzen:
var query = "SELECT * FROM Products;" + "SELECT * Suppliers";
var oracleDataAdapter = new OracleDataAdapter(query, connection);
Das funktioniert nicht. Es erscheint der Fehler "ORA-00911: invalid character". Wahrscheinlich liegt es am Semikolon. Mit einer Microsoft SQL-Datenbank und somit einem SqlDataAdapter funktioniert es.
Was muss ich ändern, damit ich auch mit dem OracleDataAdapter zwei Tabellen mit einem Mal abfragen kann?
das wird vom Oracle-DataProvider des .NET Frameworks nicht unterstützt. Du müsstest stattdessen einen REF Cursor erstellen:
"The .NET Framework Data Provider for Oracle does not support batched SQL statements. However, it does allow you to use multiple
REF CURSOR output parameters to fill a DataSet"
Quelle von obigem Zitat enthält auch ein Beispiel für einen solchen REF CURSOR: