PL / SQL Процедура: Как вернуть оператор выбора? - PullRequest
2 голосов
/ 24 января 2012

Я хочу создать хранимую процедуру на сервере баз данных ORACLE , и моя проблема в том, что я не знаю, как я могу вернуть оператор выбора.

Вот логика, которая должна в процедуре:

Входные параметры: 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

Впоследствии я хочу использовать этопроцедура в приложении MS asp.net с помощью MS ADO.net и MS Entity Framework 4.2.

Большое спасибо за ваш ответ!

Ответы [ 3 ]

2 голосов
/ 24 января 2012

Чтобы вернуть результат SELECT в Oracle, вы должны использовать «конвейерную табличную функцию».

Пожалуйста, обратитесь к руководству для описания и примера:

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

Вот еще несколько примеров с других сайтов:

http://www.oracle -developer.net / display.php? ID = 207
http://www.oracle -base.com / Статьи / Разное / PipelinedTableFunctions.php
http://psoug.org/reference/pipelined.html

2 голосов
/ 24 января 2012

В Oracle мы должны использовать Ref Cursors, чтобы добиться этого.Самая последняя версия ODP .Net поддерживает привязку Ref Cursor для Entity Framework 4.x. Узнайте больше .

Конечно, если вы не используете Oracle 11gR2, вам, вероятно, не повезло, и вам нужно использовать одно из других предложений (таких как Pipelinedфункции).

1 голос
/ 24 января 2012

Создайте ВИД или ФУНКЦИЮ.Хранимые процедуры в Oracle не возвращают результаты таблиц, как в TSQL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...