2 Stimmen

PL/SQL-Verfahren: Wie gibt man eine Select-Anweisung zurück?

Ich möchte eine gespeicherte Prozedur auf ORACLE-Datenbank-Server und mein Problem ist, dass ich nicht weiß, wie ich eine Select-Anweisung zurückgeben kann.

Hier ist die Logik, die innerhalb des Verfahrens gelten soll:

Eingangsparameter: filter1 (int), filter2 (string)

with cte as
(
    select  val1, val2, stddev(val3) from tab1 where parameter1 = filter1 and paramter = filter1 group by val 1, val2
)
 SELECT cte.*,
    round(some calculation) as final_results FROM cte

Anschließend möchte ich diese Prozedur in einer MS asp.net Anwendung verwenden, mit Hilfe von MS ADO.net und MS Entity Framework 4.2.

Vielen Dank für Ihre Antwort!

2voto

a_horse_with_no_name Punkte 489934

Um das Ergebnis eines SELECT in Oracle zurückzugeben, würden Sie eine "pipelined table function" verwenden.

Eine Beschreibung und ein Beispiel finden Sie im Handbuch:

http://docs.oracle.com/cd/B28359_01/appdev.111/b28370/tuning.htm#i53109

Hier sind einige weitere Beispiele von anderen Websites:

http://www.oracle-developer.net/display.php?id=207
http://www.oracle-base.com/articles/misc/PipelinedTableFunctions.php
http://psoug.org/reference/pipelined.html

2voto

APC Punkte 140727

In Oracle müssen wir Ref Cursors verwenden, um dies zu erreichen. Die allerneueste Version von ODP.Net unterstützt die Ref Cursor-Bindung für Entity Framework 4.x. Weitere Informationen .

Wenn Sie natürlich nicht Oracle 11gR2 verwenden, haben Sie wahrscheinlich Pech und müssen einen der anderen Vorschläge verwenden (z. B. Pipelined-Funktionen).

1voto

Entweder erstellen Sie eine VIEW oder eine FUNCTION. Stored Procedures in Oracle liefern keine Tabellenergebnisse wie in TSQL.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X