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
Bankhaus Metzler und Telekom-Tochter MMS testen, inwieweit Bitcoin-Miner das deutsche Stromnetz stabilisieren könnten.
Mit 1,7 Exaflops ist El Capitan nun der dritte Exascale-Supercomputer weltweit. Deutschland stellt erneut den…
Der deutsche Hyperscaler erweitert sein Server-Portfolio um vier Angebote mit den neuen AMD EPYC 4004…
Beim Online-Gaming kommt es nicht nur auf das eigene Können an. Auch die technischen Voraussetzungen…
Fast jedes zweite Unternehmen bietet keinerlei Schulungen an. In den übrigen Betrieben profitieren oft nur…
Huawei stellt auf der Connect Europe 2024 in Paris mit Xinghe Intelligent Network eine erweiterte…