如何找到导致ora-06575的错误?

时间:2012-03-20 14:17:22

标签: oracle plsql oracle-sqldeveloper

最近我不得不编写一个oracle函数,并且错误ora-06575突然出现了很多。 通常是因为分配缺少冒号,例如:z = 5(vs. z:= 5) 或者错过了';'在声明的最后。

无论如何,我能够创建该函数,但是在执行该错误时失败了,并没有提示问题在哪里(除了它在函数中)。

我在MSSQL和Sybase中编写了相同的功能,这两个实际上都试图将我指向任何错误的地方。所以我认为我在Oracle中做错了 - 它不能告诉我'有错误'。

在oracle中我有这样的陈述:

CREATE OR REPLACE
  FUNCTION...

我正在通过选择函数来编译SQL开发人员的函数,然后按F9。 当我选择执行该函数的语句,并按F9时,我得到ora-06575错误。

如果按F5编译该功能,它会告诉我:

ORA-24344: success with compilation error

  Compiled.

所以我找到了这个网站:http://www.dba-oracle.com/t_ora_24344_success_with_compilation_error.htm 但我似乎无法运行'显示错误'。当我运行它时,我得不到我能看到的输出。

这只适用于sqlplus吗?我正在使用SQL开发人员,我更愿意坚持使用SQL开发人员。 有什么我想念的吗?我想让它告诉我错误在哪里。

2 个答案:

答案 0 :(得分:10)

SHOW ERRORS是一个sql * plus命令
您还可以查询USER_ERRORS视图

SELECT line, position, text
FROM user_errors
WHERE name = '<<your_object_name>>'

答案 1 :(得分:4)

SHOW ERRORS也适用于SQL * Developer(至少在我最近使用的版本中,当然是3.1)。你在评论中提到你是以SYS身份连接的,所以我真的希望你在另一个模式中明确地创建你的函数 - 我会避免这种情况,以防万一你忘记了一天,并修改任何预建的模式(SYS,SYSTEM等)是一个坏主意。如果是这样,您还需要使用模式为错误对象添加前缀:

create or replace function my_schema.x return number is
begin
    return sysdate;
end;
/
show errors my_schema.x

当作为脚本运行时(F5),这说:

FUNCTION X compiled
Warning: execution completed with warning
3/8    PLS-00382: expression is of wrong type
3/1    PL/SQL: Statement ignored

输出的前两行来自函数编译,最后两行来自show errors。您也可以使用F9单独运行这两个语句,以查看相同的结果。

但是我不确定你是如何得到ORA-24344的,所以也许你的版本较早;并且它可能不起作用。 A.B.Cade的解决方案适用于您的客户。