2014-12-08 233 views
-2

这通常会在SQL Server Express中创建一个存储过程,但我不确定如何在Oracle 11g中重写它,因为它不包含“@”符号。任何人都可以为我转换这个好吗?如何将具有参数的SQL Server存储过程转换为具有参数的Oracle存储过程?

create procedure search_expenses 
    @startdate as datetime, 
    @enddate as datetime 
as 
begin 
    select 
     amount, description, trxdate, bankaccountid 
    from 
     expense 
    where 
     trxdate between @startdate and @enddate; 
end 
go 
+3

你花了多长时间研究这个的例子吗?我敢打赌,我可以在5分钟内找到答案。 https://docs.oracle.com/cd/E18283_01/appdev.112/e17126/create_procedure.htm – 2014-12-08 04:53:39

+0

使用swiss sql在线转换器,可能会对您有所帮助 – 2014-12-08 04:56:13

+0

我试图在Oracle中转换它并且无法使其工作...不断说我需要一个INTO关键字...感谢负面投票...真正有帮助 – Jae 2014-12-08 05:22:08

回答

0

程序在Oracle中的工作方式不同。你不能做一个直接的选择,它会为你输出一个结果集。您需要选择一个REFCURSOR,然后您的应用程序将必须处理该光标。

其次,Oracle中的参数没有用@指定。

下面是一个Oracle过程

CREATE OR REPLACE PROCEDURE get_some_table(ref_cursor out sys_refcursor) is 
    begin 
    open ref_cursor for 
     select * from my_schema.some_table; 
    end get_some_table; 
+0

谢谢Jaques。这是答案,或者至少是我所希望的方向。我将不得不阅读“refcursor”来转换它。 – Jae 2014-12-08 21:55:48