从 plsql 中的对象列表中查找对象

乔比·威尔逊·马修斯

我正在尝试编写 plsql 函数,它以雇员列表(雇员列表)和雇员姓名(varchar2 类型)为参数,然后遍历列表雇员,直到找到具有相应姓名的雇员。一旦找到对象,函数就会返回员工的地址。

EMPLOYEE_OBJ 类型

CREATE OR REPLACE TYPE EMPLOYEE_OBJ AS OBJECT 
(name varchar2(1000), 
 address varchar2(1000)
);

EMPLOYEE_OBJ_ARRAY 类型(EMPLOYEE_OBJ 数组)

CREATE OR REPLACE TYPE EMPLOYEE_OBJ_ARRAY AS VARRAY(100) OF EMPLOYEE_OBJ;

获取对象值的函数

create or replace FUNCTION GET_EMPLOYEE_ADDRESS (employee_list EMPLOYEE_OBJ_ARRAY,name varchar2)
RETURN VARCHAR2
IS
BEGIN 
FOR i in 1 .. employee_list.count LOOP 
      IF employee_list(i).name = name THEN
         return employee_list(i).address;
      END IF;
   END LOOP;
RETURN NULL;
END;

我得到的错误是:

ORA-24344: success with compilation error
ORA-06512: at "SYS.WWV_DBMS_SQL_APEX_190100", line 590
ORA-06512: at "SYS.DBMS_SYS_SQL", line 1658
ORA-06512: at "SYS.WWV_DBMS_SQL_APEX_190100", line 576
ORA-06512: at "APEX_190100.WWV_FLOW_DYNAMIC_EXEC", line 2033

你能帮我解决这个问题吗。还有没有更简单的方法来做到这一点?比如选择查询。

亚历克斯吉布斯

虽然提供的FUNCTION似乎可以在至少几个版本的 Oracle 上编译和执行良好,但有一种方法可以在不迭代集合的情况下检索地址。下面是一个示例,使用您提供的类型:

CREATE OR REPLACE TYPE EMPLOYEE_OBJ AS OBJECT 
(name varchar2(1000), 
 address varchar2(1000)
);
CREATE OR REPLACE TYPE EMPLOYEE_OBJ_ARRAY AS VARRAY(100) OF EMPLOYEE_OBJ;

和查询:

SELECT ADDRESS FROM TABLE (EMPLOYEE_OBJ_ARRAY(
                      EMPLOYEE_OBJ('John','Finland'),
                      EMPLOYEE_OBJ('Molly','Spain')))
WHERE NAME = 'John';

结果:

   ADDRESS
__________
Finland


1 row selected.

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在列表中查找对象

来自分类Dev

在列表中查找对象

来自分类Dev

从地图内的列表中查找对象

来自分类Dev

从地图内的列表中查找对象

来自分类Dev

Java查找对象列表中不包含的对象

来自分类Dev

C# 使用对象字段在列表中查找对象

来自分类Dev

显示 PLSQL 中的所有对象值

来自分类Dev

使用流在列表列表中查找对象

来自分类Dev

从列表中查找对象数组中的值

来自分类Dev

在复杂对象中查找对象

来自分类Dev

Qt:按属性在列表中查找对象

来自分类Dev

在Python中查找对象内部列表的长度

来自分类Dev

在列表中查找对象并替换其值

来自分类Dev

从树或列表层次结构中查找对象

来自分类Dev

如何通过列表中的属性值获取/查找对象

来自分类Dev

R:在深层嵌套列表中按名称查找对象

来自分类Dev

在列表中查找对象并替换其值

来自分类Dev

如何按属性在python列表中查找对象

来自分类Dev

plsql中的增量函数

来自分类Dev

PLSQL中的“ READ”常量

来自分类Dev

PLSQL中的包语法

来自分类Dev

PLSQL 中的过滤比较

来自分类Dev

在 PLSQL 中触发

来自分类Dev

Oracle plsql对象成员函数

来自分类Dev

在plsql varray中使用对象

来自分类Dev

在iOS中从x,y查找对象

来自分类Dev

使用find()在JSON中查找对象

来自分类Dev

在NSMutableArray中按名称查找对象

来自分类Dev

在JSON文件中查找对象属性