Oracle SQL-返回结果集的函数
我有一个关于Oracle SQL 4.0.0版本的问题。。。它是关于应该返回小数据集的函数 所以程序有3个输入参数和数据集作为输出。。。这就是我目前所拥有的Oracle SQL-返回结果集的函数,sql,oracle,function,sys-refcursor,Sql,Oracle,Function,Sys Refcursor,我有一个关于Oracle SQL 4.0.0版本的问题。。。它是关于应该返回小数据集的函数 所以程序有3个输入参数和数据集作为输出。。。这就是我目前所拥有的 CREATE OR REPLACE FUNCTION "PARTS"(a IN VARCHAR, b IN VARCHAR2, c IN VARCHAR2) RETURN SYS_REFCURSOR
CREATE OR REPLACE FUNCTION "PARTS"(a IN VARCHAR,
b IN VARCHAR2,
c IN VARCHAR2)
RETURN SYS_REFCURSOR
AS
final SYS_REFCURSOR;
par VARCHAR(32);
description VARCHAR(32);
inputvars VARCHAR(1024);
a1 VARCHAR(32);
BEGIN
IF a IS NULL THEN
a1 := 'NOT_REQD';
ELSE
a1 := a;
END IF;
OPEN final FOR
SELECT substr(number1, 3)
INTO par
, description1
FROM class_event_element
WHERE substr(a, 4) = a1
AND name = b
AND vart = c;
RETURN final;
EXCEPTION
WHEN no_data_found THEN RETURN ('NONE');
WHEN OTHERS THEN RETURN ('ERROR');
END;
对这个函数的解释是,我想多次调用它,这就是为什么我首先要做它的原因。
所以我的表中的数据可以,但它不必有,这就是为什么我有IF的原因
然后我有一个简单的Select语句,我需要substr函数来表示那个里的数字
我的主要问题是,在谷歌搜索了半天之后。。。我不知道如何返回我的SYS\u REFCURSOR Final。
关于这一点,是否有任何建议,或者至少知道如何更改才能使其正常工作,以便我的函数可以返回我需要的结果集?使用这组“起始”更改,同时删除into子句:
TYPE ResultSet is REF CURSOR;
create or replace PROCEDURE PARTS (iclassname IN varchar, idevice_name IN varchar2, idevice_variant IN varchar2, partsfinal out Resultset)
AS
part varchar2(32):=NULL;
description varchar(32):=NULL;
inputvars varchar2(1024):=NULL;
classname1 varchar2(32):=NULL;
begin
IF iclassname is null THEN
classname1 := 'NOT_REQD';
ELSE
classname1 := iclassname;
END IF;
OPEN partsFinal FOR SELECT substr(partnumber1,3) part, partdescription1
FROM
lookup_atm_class_event_element
WHERE
substr(classname,4) = classname1
and device_name = idevice_name
and device_variant = idevice_variant;
RETURN;
exception
when others then
open partsfinal for select 'ERR', 'Error' from dual;
end;
您需要调整错误返回部分,以反映调用此过程以处理错误的代码所需的内容。谢谢您的快速回答Jim,我将对此进行测试,并让您知道它是否适用于我。再次感谢您againI在编译时收到错误-错误(2,26):PLS-00103:在预期以下情况之一时遇到符号“REF”:数组varray表对象修复了可变不透明sparseI我只是在函数开始时做了一些小更改,它工作得很好!非常感谢你,我的朋友!