如何在Oracle过程中不返回任何内容

时间:2014-06-18 17:12:05

标签: oracle

我是甲骨文新手,几天前才开始使用它。

我想将此过程从SQL Server转换为Oracle。本质上我想调用一个不返回任何内容的过程......因此我的应用程序没有变化。

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

AS
SELECT ''

GO

1 个答案:

答案 0 :(得分: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;

根据您用来调用程序的代码,这可能不是一个透明的变化。