我是甲骨文新手,几天前才开始使用它。
我想将此过程从SQL Server转换为Oracle。本质上我想调用一个不返回任何内容的过程......因此我的应用程序没有变化。
create PROCEDURE [dbo].[LC_UNBOOKTRADE]
@EXEID VARCHAR(50),
AS
SELECT ''
GO
答案 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;
根据您用来调用程序的代码,这可能不是一个透明的变化。