这是我的对象类型
Create or replace type demo_obj is object (
Flag number,
Message varchar2(200))
对象表
Create or replace type obj_table is table of demo_obj
接下来,在我编写的函数中,一个游标首先获取一些id接下来,我需要打开光标,检查每个我的状态和其他表是否包含成功或错误状态
如果光标是空的,我需要返回标志为0和消息为空的
如果所有的"我会";s是成功的o需要返回标志1,消息是由逗号分隔的所有ID的串联字符串
如果少数ID成功,少数ID错误,我需要返回标志2和消息作为错误的级联ID
这就是你应该做的。我不关心空光标和错误的逻辑-你自己做。这个演示展示了如何从函数中返回合适的类型(我相信,这正是困扰您的问题(。
类型优先:
SQL> CREATE OR REPLACE TYPE demo_obj IS OBJECT
2 (
3 Flag NUMBER,
4 MESSAGE VARCHAR2 (200)
5 );
6 /
Type created.
SQL> CREATE OR REPLACE TYPE obj_table IS TABLE OF demo_obj;
2 /
Type created.
功能:
SQL> CREATE OR REPLACE FUNCTION f_test
2 RETURN obj_table
3 IS
4 l_flag NUMBER;
5 l_msg VARCHAR2 (200);
6 retval obj_table := obj_table ();
7 BEGIN
8 l_flag := 1;
9
10 SELECT LISTAGG (deptno, ',') WITHIN GROUP (ORDER BY deptno)
11 INTO l_msg
12 FROM dept;
13
14 retval.EXTEND;
15 retval (1) := demo_obj (l_flag, l_msg);
16
17 RETURN retval;
18 END;
19 /
Function created.
测试:
SQL> SELECT * FROM TABLE (f_test);
FLAG MESSAGE
---------- --------------------
1 10,20,30,40
SQL>