PL / SQL过程:如何返回select语句?

时间:2012-01-24 13:48:15

标签: sql oracle entity-framework ado.net plsql

我想在 ORACLE数据库服务器上创建存储过程,我的问题是,我不知道如何返回select语句。

这是逻辑,应该在程序中:

输入参数: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 ADO.net和MS Entity Framework 4.2在MS asp.net应用程序中使用此过程。

非常感谢,感谢您的回复!

3 个答案:

答案 0 :(得分:2)

要在Oracle中返回SELECT的结果,您将使用"流水线表函数"。

请参阅手册以获取说明和示例:

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/articles/misc/PipelinedTableFunctions.php
http://psoug.org/reference/pipelined.html

答案 1 :(得分:2)

在Oracle中,我们必须使用Ref Cursors来实现这一点。最新版本的ODP .Net支持Entity Framework 4.x的Ref Cursor绑定。 Find out more

当然,如果您没有使用Oracle 11gR2,那么您可能运气不好,并且您需要使用其他建议之一(例如Pipelined函数)。

答案 2 :(得分:1)

创建VIEW或FUNCTION。 Oracle中的存储过程不会像TSQL一样返回表结果。