问题描述
我正在尝试使用关联数组在表中插入内容。我们有一个18c数据库,所以我认为应该可以在SQL语句中使用关联数组。在12c之前,我为此使用了数据库嵌套表类型。
LiveSQL测试演示了我遇到的问题: ORA-00902: 运行代码后无效的数据类型。所以我的问题是: 在insert select fetable (associative_array_name) 语句中是否允许关联数组,如果是这样,我如何防止我遇到的错误?
谢谢你的帮助。
LiveSQL测试演示了我遇到的问题: ORA-00902: 运行代码后无效的数据类型。所以我的问题是: 在insert select fetable (associative_array_name) 语句中是否允许关联数组,如果是这样,我如何防止我遇到的错误?
谢谢你的帮助。
专家解答
不,你不能难过:
If the PL/SQL-only data type is an associative array, it cannot be used within a non-query DML statement (INSERT, UPDATE, DELETE, MERGE) nor in a subquery.
https://docs.oracle.com/database/121/LNPLS/release_changes.htm#GUID-57E439FB-B196-46CB-857C-0ADAB32D9EA0
不过,在这种情况下,我认为没有任何必要。您可以使用forall insert代替:
If the PL/SQL-only data type is an associative array, it cannot be used within a non-query DML statement (INSERT, UPDATE, DELETE, MERGE) nor in a subquery.
https://docs.oracle.com/database/121/LNPLS/release_changes.htm#GUID-57E439FB-B196-46CB-857C-0ADAB32D9EA0
不过,在这种情况下,我认为没有任何必要。您可以使用forall insert代替:
forall i in 1 .. pa_test_tab.count
insert into test_tab
values pa_test_tab(i); 文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




