gpt4 book ai didi

java - PL/SQL 中的嵌套类(对象类型)

转载 作者:行者123 更新时间:2023-11-29 08:26:07 25 4
gpt4 key购买 nike

在 Java 中,可以像这样定义递归(嵌套)类:

private class Node
{
Item item;
Node next;
}

是否可以使用 PL/SQL 对象类型创建类似的结构?

最佳答案

好吧,您可以使用可替代类型来规避明显的自引用问题,如下所示。

CREATE TYPE item_t
AS
OBJECT (
attr_a VARCHAR2 (30));
/

CREATE TYPE base_node_t
AS
OBJECT (
item item_t)
NOT FINAL
NOT INSTANTIABLE;
/

CREATE TYPE node_t
UNDER base_node_t (
next_node base_node_t);
/

DECLARE
nodes node_t :=
node_t (
item_t ( 'grandparent'),
node_t (
item_t ( 'parent'),
node_t (
item_t ( 'child'),
NULL)));
BEGIN
DBMS_OUTPUT.put_line (
XMLTYPE (nodes).getclobval (0, 2));
END;
/

<NODE_T>
<ITEM>
<ATTR_A>grandparent</ATTR_A>
</ITEM>
<NEXT_NODE>
<ITEM>
<ATTR_A>parent</ATTR_A>
</ITEM>
<NEXT_NODE>
<ITEM>
<ATTR_A>child</ATTR_A>
</ITEM>
<NEXT_NODE/>
</NEXT_NODE>
</NEXT_NODE>
</NODE_T>

但是我不相信这样的类型可以声明为列数据类型,因此不能将它们直接保存在关系表中(尽管间接方法,例如在 anydata 内部或转换为 xml 会起作用)。

此外,我还没有真正在实际场景中使用过它,我不知道是否存在递归限制或者这通常有多稳健。

关于java - PL/SQL 中的嵌套类(对象类型),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52917362/

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