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
Über drei Millionen Angriffsversuche unter Deckmantel von Minecraft / YouTube-Star Mr. Beast als prominenter Köder
Die Prognose für die Anfahrt bezieht das Verkehrsaufkommen, die Stellplatzverfügbarkeit sowie die Lenk- und Ruhezeiten…
Unternehmen können mit Casebase Portfolio an Daten- und KI-Anwendungsfällen organisieren.
Smart-TV oder Saugroboter: Nutzer schützen ihre smarten Heimgeräte zu wenig, zeigt eine repräsentative BSI-Umfrage.
Im Benchmark erreicht der neue Core Ultra 200V eine Laufzeit von 14 Stunden. Intel tritt…
Jeder dritte hält sich damit für unsichtbar. Wie widersprüchlich unser Datenschutzverhalten oft ist, zeigt eine…