gpt4 book ai didi

oracle - 将表类型对象与 Oracle 中的常规表连接起来

转载 作者:行者123 更新时间:2023-12-05 03:14:09 27 4
gpt4 key购买 nike

我有一个包含条目和多个类型的常规表:

create TYPE entity as OBJECT ( attribute1 NUMBER);
create TYPE entity_array as OBJECT of entity;

现在我想在我的表中使用 sql 工作表连接声明的 entity_array 对象:

DECLARE
entity_array_obj entity_array := entity_array(
entity(11111),
entity(22222)
);
BEGIN
select * from mytable as t1
inner join entity_array_obj as t2 on (t1.attribute1 = t2.attribute1);
END;

我遇到了编译错误:

PL/SQL: ORA-00933: SQL command not properly ended

请推荐

最佳答案

create type entity as object ( attribute1 number);
create type entity_array as table of entity;

create table mytable(attribute1 number);
insert into mytable values (11111);

declare
entity_array_obj entity_array := entity_array(
entity(11111),
entity(22222)
);
v_count number;
begin
select count(*)
into v_count
from mytable t1
join table(entity_array_obj) t2
on t1.attribute1 = t2.attribute1;

dbms_output.put_line('Count: '||v_count);
end;
/

以下是对代码所做的主要更改:

  1. as OBJECT of entity; 更改为 as TABLE of entity;。您可能没有注意到此错误,因为某些 IDE 会抑制代码编译错误。
  2. Oracle 中的表别名不适用于“as”。
  3. PL/SQL 中的选择必须始终选择 INTO 内容。
  4. table() 运算符将集合转换为行源。

关于oracle - 将表类型对象与 Oracle 中的常规表连接起来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26769967/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com