Mit Oracle gespeicherte Prozeduren mit Hilfe von ADO.NET verwenden

Mit der Veröffentlichung des .NET Managed Provider For Oracle steht .NET-Entwicklern eine leistungsfähige Möglichkeit zum Zugriff auf Oracle-Daten mit Hilfe von ADO.NET zur Verfügung.

In einem früheren Artikel wurde beschrieben, wie sich SQL-Statements mit Hilfe des Oracle Managed Provider mit Oracle-Datenbanken verbinden und gegen sie ausführen lassen. Diesmal schauen wir uns an, wie man den neuen Provider dazu bringt, mit unter Oracle gespeicherten Prozeduren zusammenzuarbeiten.

Etwas ungewohnt

Ist man an die Entwicklung für SQL-Server gewöhnt, wird man die Oracle-Welt zunächst sehr fremd finden. Bei der Arbeit mit SQL-Server ist der Prozess des Zugriffs auf die Ergebnisse einer SQL-Anfrage so einfach, dass man die Anfrage nur ausführen und die Ergebnisse einem DataReader, DataSet oder etwas gleichwertigem zuweisen muss. Für gespeicherte Prozeduren ist dieser Prozess größtenteils der gleiche, denn SQL-Server gibt die Ergebnisse zurück, wenn ein Befehl ausgeführt wird. Zur Erläuterung dient der Code in Listing A, der eine gespeicherte Prozedur namens sp_persons ausführt und die Ergebnisse in ein DataSet lädt.

In Bezug auf die Datenrückgabe folgt Oracle nicht dem Muster von SQL-Server. Die Ergebnisse einer Oracle-Anfrage werden als ref cursor zurückgegeben, der als Ausgabeparameter in der in Oracle gespeicherten Prozedur festgelegt wird. Beim Zugriff auf Oracle von einer .NET-Anwendung aus, muss man also einen Parameter für den ref cursor angeben.

Die Erstellung von Parametern mit OracleParameter
Zur Erstellung und Konfiguration des Parameters verwendet man die Klasse System.Data.OracleClient.OracleParameter, die sowohl mit Eingabe- als auch Ausgabeparametern umgehen kann. Die Klasse OracleCommand beinhaltet eine Eigenschaft ‚Parameters‘, die um initialisierte Parameter-Objekte ergänzt werden kann.

Man vergleiche den Code in Listing A mit dem Beispiel in Listing B, in dem eine Oracle-Verbindung aufgebaut und eine gespeicherte Prozedur als Befehl eingesetzt wird. Man achte darauf, dass der Befehlstyp auf StoredProcedure festgelegt werden muss. Standardmäßig ist Text eingestellt, was für das Ausführen von SQL nützlich ist. Sind die Zeichenketten für Befehl und Verbindung festgelegt, fügt man einen Ausgabeparameter hinzu, der den von der Prozedur zurückgegebenen Cursor aufnehmen soll. Der Prozess des Hinzufügens des Objekts OracleParameter zu der Eigenschaft Parameters des Objekts OracleCommands erfordert einen Typ (z. B. Cursor) und einen Namen, der dem Namen entspricht, der in der eigentlichen in Oracle gespeicherten Prozedur zugewiesen wurde. Mit Hilfe der Eigenschaft Direction muss außerdem die Richtung des Parameters festegelegt werden. Mögliche Einstellungen sind Input, Output, InputOutput oder ReturnValue. In diesem Beispiel akzeptiert der Cursor die Ausgabe der Prozedur, weshalb wir seine Direction auf Output setzen. Zu guter Letzt öffnen wir einen OracleDataReader für die Ergebnisse des Befehls.

Themenseiten: Big Data, Datenbank, Software

Fanden Sie diesen Artikel nützlich?
Content Loading ...
Whitepaper

Artikel empfehlen:

Neueste Kommentare 

Noch keine Kommentare zu Mit Oracle gespeicherte Prozeduren mit Hilfe von ADO.NET verwenden

Kommentar hinzufügen

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *