最近我不得不编写一个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开发人员。 有什么我想念的吗?我想让它告诉我错误在哪里。
答案 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的解决方案适用于您的客户。