我们开发的应用程序有一个模式,USER1,它有表、类型、包等。
我必须将一些用户定义的类型移动到不同的模式 USER2。USER1 有几个表依赖于这些用户定义的类型。我们重新创建了 USER2 中的类型,但在我删除 USER1 中的类型之前,我们必须删除表对它们的依赖。为此,我正在考虑通过使用 USER2 中的用户定义类型(而不是 USER1)创建中间表来使用DBMS_REDEFINITION
我正在使用以下内容将 USER1 中的用户定义类型转换为在 USER2 中创建的新类型,其中 EMP_LIST 是一个 EMP_TYPE 数组。
BEGIN
DBMS_REDEFINITION.START_REDEF_TABLE( 'user1', 'department', 'department_in'
, 'dept_id dept_id, dept_name dept_name
, cast(emp_list as user2.emp_type) emp_list'
, dbms_redefinition.cons_use_rowid);
END;
但是,我收到以下错误:
错误:ORA-22907:对不是嵌套表或 VARRAY 的类型的无效 CAST
我尝试使用 MULTISET 运算符,但它看起来好像是不允许的。我们怎样才能做到这一点?