【发布时间】:2018-08-14 09:13:01
【问题描述】:
考虑以下脚本:
CREATE TYPE t1 AS TABLE OF VARCHAR2(10);
/
CREATE TYPE t2 AS VARRAY(10) OF VARCHAR2(10);
/
CREATE TABLE t (
id NUMBER(10),
t1 t1,
t2 t2
)
NESTED TABLE t1 STORE AS t1_nt;
INSERT INTO t VALUES (1, NULL, NULL);
INSERT INTO t VALUES (2, t1('abc'), t2('abc'));
SELECT * FROM t WHERE 'abc' MEMBER OF t1;
SELECT * FROM t WHERE 'abc' MEMBER OF t2;
最后两个SELECT 语句的输出是
ID T1 T2
-------------------
2 [abc] [abc]
ORA-00932: inconsistent datatypes: expected UDT got
SQL_XQMZQAMSETXZLGIEEEEBUTFWF.T2
member_condition 是一种成员条件,用于测试元素是否是嵌套表的成员。如果 expr 等于指定的嵌套表或可变数组的成员,则返回值为 TRUE。
我做错了什么?
【问题讨论】:
-
我认为这一定是文档错误。它在五个地方说“嵌套表”,但在第二句话中只提到“varray”,'如果 expr 等于指定嵌套表或 varray 的成员,则返回值为 TRUE。'相同的文本出现在 18c 文档中,所以也许有人应该告诉他们。
-
@WilliamRobertson:是的,绝对是一个文档错误:asktom.oracle.com/pls/apex/…