0
我是Oracle新手,幾天前纔開始使用它。如何在Oracle過程中不返回任何內容
我想將此過程從SQL Server轉換爲Oracle。 Essensially我想調用一個不返回任何內容的過程,因此不會改變我的應用程序。
create PROCEDURE [dbo].[LC_UNBOOKTRADE]
@EXEID VARCHAR(50),
AS
SELECT ''
GO
我是Oracle新手,幾天前纔開始使用它。如何在Oracle過程中不返回任何內容
我想將此過程從SQL Server轉換爲Oracle。 Essensially我想調用一個不返回任何內容的過程,因此不會改變我的應用程序。
create PROCEDURE [dbo].[LC_UNBOOKTRADE]
@EXEID VARCHAR(50),
AS
SELECT ''
GO
首先,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;
取決於你使用打電話給你的程序代碼,不過,這可能不是一個透明的變化。
謝謝你這個compliled罰款,但我希望能夠調用該過程並返回一個空值,即EXEC lc_unbookTrade(p_exeid); – user3706392
@ user3706392 - 賈斯汀說你不能從程序中返回任何東西。也許如果你添加你當前使用的代碼來調用你的SQL Server過程來解決這個問題,它會指示是否有一個透明的Oracle等價物。否則,你在尋求不可能的東西。 –
該過程與上述相同,但我想要的是當您運行Exec lc_unbookTrade(exeid)時。結果爲空字符串 – user3706392