ORA-38437: The ADT “string” may not contain any user methods.
Cause: An attempt was made to create an attribute set from an ADT that has one or more user methods.
Action: Drop the ADT and recreate it with no user methods.
ORA-38437 错误代码指出,字符串类型的ADT(用户定义类型)不允许包含任何用户定义的方法。
1. 在Oracle 18c中,当用户试图在字符串ADT上定义方法时,则可能出现ORA-38437错误。例如:
CREATE OR REPLACE TYPE my_str AS OBJECT
(
string_val VARCHAR(20),
MEMBER FUNCTION my_str_fetch RETURN VARCHAR2
);
2. 在定义某个方法时未使用正确的参数类型,也会出现ORA-38437错误。例如:
CREATE OR REPLACE TYPE my_str AS OBJECT
(
string_val VARCHAR(20),
MEMBER FUNCTION my_str_fetch RETURN INT
);
1. 检查ADT,确保正确并且有效。
2. 检查使用的参数类型是否正确,根据需要重新定义参数类型。
3. 确认被声明的方法在被定义的ADT中是否存在。
4. 捕获ORA-38437错误,并且重新定义字符串ADT,使其满足编译器所要求的限制。