我想在 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应用程序中使用此过程。
非常感谢,感谢您的回复!
答案 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一样返回表结果。