Mit Oracle gespeicherte Prozeduren mit Hilfe von ADO.NET verwenden

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.

Page: 1 2

ZDNet.de Redaktion

Recent Posts

Studie: Ein Drittel aller E-Mails an Unternehmen sind unerwünscht

Der Cybersecurity Report von Hornetsecurity stuft 2,3 Prozent der Inhalte gar als bösartig ein. Die…

2 Tagen ago

HubPhish: Phishing-Kampagne zielt auf europäische Unternehmen

Die Hintermänner haben es auf Zugangsdaten zu Microsoft Azure abgesehen. Die Kampagne ist bis mindestens…

3 Tagen ago

1. Januar 2025: Umstieg auf E-Rechnung im B2B-Geschäftsverkehr

Cloud-Plattform für elektronische Beschaffungsprozesse mit automatisierter Abwicklung elektronischer Rechnungen.

3 Tagen ago

Google schließt schwerwiegende Sicherheitslücken in Chrome 131

Mindestens eine Schwachstelle erlaubt eine Remotecodeausführung. Dem Entdecker zahlt Google eine besonders hohe Belohnung von…

3 Tagen ago

Erreichbarkeit im Weihnachtsurlaub weiterhin hoch

Nur rund die Hälfte schaltet während der Feiertage komplett vom Job ab. Die anderen sind…

4 Tagen ago

Hacker missbrauchen Google Calendar zum Angriff auf Postfächer

Security-Experten von Check Point sind einer neuen Angriffsart auf die Spur gekommen, die E-Mail-Schutzmaßnahmen umgehen…

5 Tagen ago