2014-06-18 44 views
0

我是Oracle新手,幾天前纔開始使用它。如何在Oracle過程中不返回任何內容

我想將此過程從SQL Server轉換爲Oracle。 Essensially我想調用一個不返回任何內容的過程,因此不會改變我的應用程序。

create PROCEDURE [dbo].[LC_UNBOOKTRADE] 
    @EXEID VARCHAR(50), 

AS 
SELECT '' 

GO 

回答

2

首先,Oracle中的一個過程沒有也不能返回任何東西。函數返回一些東西。一個程序可以有一個out參數。其次,除非您使用12.1,否則Oracle中的過程不能通過像在SQL Server中那樣執行select語句來隱式返回遊標。在Oracle中使用視圖來處理這類事情會更常見。

第三,在Oracle中,empty string is NULL所以如果你有代碼需要返回一個非空的空字符串,你將不得不改變它。

潛在的,這樣的事情將是最接近的等效代碼

CREATE OR REPLACE PROCEDURE lc_unbookTrade( 
    p_exeid IN VARCHAR2, 
    p_rc OUT SYS_REFCURSOR) 
AS 
BEGIN 
    OPEN p_rc 
    FOR SELECT null 
     FROM dual; 
END; 

取決於你使用打電話給你的程序代碼,不過,這可能不是一個透明的變化。

+0

謝謝你這個compliled罰款,但我希望能夠調用該過程並返回一個空值,即EXEC lc_unbookTrade(p_exeid); – user3706392

+1

@ user3706392 - 賈斯汀說你不能從程序中返回任何東西。也許如果你添加你當前使用的代碼來調用你的SQL Server過程來解決這個問題,它會指示是否有一個透明的Oracle等價物。否則,你在尋求不可能的東西。 –

+0

該過程與上述相同,但我想要的是當您運行Exec lc_unbookTrade(exeid)時。結果爲空字符串 – user3706392

相關問題