2014-12-08 219 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