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
Der Cybersecurity Report von Hornetsecurity stuft 2,3 Prozent der Inhalte gar als bösartig ein. Die…
Die Hintermänner haben es auf Zugangsdaten zu Microsoft Azure abgesehen. Die Kampagne ist bis mindestens…
Cloud-Plattform für elektronische Beschaffungsprozesse mit automatisierter Abwicklung elektronischer Rechnungen.
Mindestens eine Schwachstelle erlaubt eine Remotecodeausführung. Dem Entdecker zahlt Google eine besonders hohe Belohnung von…
Nur rund die Hälfte schaltet während der Feiertage komplett vom Job ab. Die anderen sind…
Security-Experten von Check Point sind einer neuen Angriffsart auf die Spur gekommen, die E-Mail-Schutzmaßnahmen umgehen…