我的任务是编写和测试几个小型 PL/SQL 脚本。这超出了我的核心能力,但我可以通过足够的反复试验来做到这一点。使此过程复杂化的一件事是 SQ LDeveloper 的错误报告。它使用行号和列号输出问题的简短描述,但行号与错误的实际位置无关。也就是说,我可能在脚本的第 52 行使用 = 而不是 := 进行赋值,但“脚本输出”窗口中的错误说明了第 37 行的问题。这是一个典型的问题吗?有没有办法将报告的行号转换为实际行号?
我正在使用 SQL Developer 1.5.5。
我的任务是编写和测试几个小型 PL/SQL 脚本。这超出了我的核心能力,但我可以通过足够的反复试验来做到这一点。使此过程复杂化的一件事是 SQ LDeveloper 的错误报告。它使用行号和列号输出问题的简短描述,但行号与错误的实际位置无关。也就是说,我可能在脚本的第 52 行使用 = 而不是 := 进行赋值,但“脚本输出”窗口中的错误说明了第 37 行的问题。这是一个典型的问题吗?有没有办法将报告的行号转换为实际行号?
我正在使用 SQL Developer 1.5.5。
我明白你的意思。我每天都会遇到这个问题。我还没有完全弄清楚确切的解决方案,但它似乎与编译器如何处理注释有关。我刚刚使用查询在我的机器上做了一个测试,在该查询中我在特定行上插入了一个错误。Line: # 处的错误按预期关闭。从 SQL 中删除注释行后,错误对应于 Line #。
编辑:添加测试用例以响应 Ian Carpenter
select column1
,column2
-- ,column3
,column4
from table1
where 1=1
and column1 = '00000000';
运行然后更改为:
select column1
,column2
-- ,column3
,column4a
from table1
where 1=1
and column1 = '00000000';
运行并得到以下错误:
ORA-00904: "COLUMN4A": invalid identifier
00904. 00000 - "%s: invalid identifier"
*Cause:
*Action:
Error at Line: 3 Column: 11