我有一个正在使用的 PL/SQL 函数,它有时可以编译,但有时会给我这个错误。
ORA-00600: internal error code, arguments: [17285], [0x318FDE2C], [1], [0x273F1C60], [], [], [], [], [], [], [], []
00600. 00000 - "internal error code, arguments: [%s], [%s], [%s], [%s], [%s], [%s], [%s], [%s]"
*Cause: This is the generic internal error number for Oracle program
exceptions. This indicates that a process has encountered an
exceptional condition.
*Action: Report as a bug - the first argument is the internal error number
断开并重新连接到 Oracle 并且函数编译正常,这感觉很疯狂......
谷歌搜索错误代码和参数给了我这个
ERROR:
ORA-600 [17285] [a] [b] [c]
VERSIONS:
versions 7.0 to 10.1
DESCRIPTION:
Oracle is in the process of deleting an instantiation object when it
discovers that the object is currently on the call stack.
This should not occur and so ORA-600 [17285] is reported.
ARGUMENTS:
Arg [a] Instantiation object
Arg [b] Call stack nesting level
Arg [c] Library Cache Object Handle
FUNCTIONALITY:
Kernel Generic Instantiation manager
IMPACT:
PROCESS FAILURE
NON CORRUPTIVE - no corruption to underlying data.
SUGGESTIONS:
This error is usually accompanied by another error. Please check for this.
我的函数返回一个流水线的自定义表类型。大多数功能代码都被遗漏了......
CREATE TYPE t_solexp_row AS OBJECT (
obj VARCHAR(30),
dt DATE,
param VARCHAR(30),
param_id NUMBER,
val NUMBER,
change_time TIMESTAMP
);
/
CREATE TYPE t_solexp_tab IS TABLE OF t_solexp_row;
/
CREATE OR REPLACE FUNCTION get_solexp_tab(p_start_date IN DATE, p_end_date IN DATE) RETURN t_solexp_tab PIPELINED AS
BEGIN
...
LOOP
PIPE ROW(t_solexp_row(...,...,...,...,...,...);
END LOOP;
...
RETURN;
END;
/
知道什么可能导致这种行为吗?