【问题标题】:PL/SQL Procedure: How return a select statement?PL/SQL 过程:如何返回一个选择语句?
【发布时间】:2012-01-24 22:22:03
【问题描述】:

我想在 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 应用程序中使用此过程。

非常感谢您的回复!

【问题讨论】:

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


    【解决方案1】:

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

    当然,如果您没有使用 Oracle 11gR2,那么您可能不走运,您需要使用其他建议之一(例如流水线函数)。

    【讨论】:

      【解决方案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

      【讨论】:

        【解决方案3】:

        要么创建一个视图,要么创建一个函数。 Oracle 中的存储过程不像 TSQL 那样返回表结果。

        【讨论】:

        • synatx 如何查找选择返回函数?
        • 查看 a_horse_with_no_name 的答案。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-06-27
        • 1970-01-01
        • 2013-06-11
        • 1970-01-01
        相关资源
        最近更新 更多