Oracle 匿名 PL/SQL 块中缺少关键字错误
Posted
技术标签:
【中文标题】Oracle 匿名 PL/SQL 块中缺少关键字错误【英文标题】:Missing keyword error in Oracle anonymous PL/SQL block 【发布时间】:2013-09-13 09:52:53 【问题描述】:匿名 PL/SQL 块:
DECLARE
CURSOR employees_in_10_cur
IS
SELECT *
FROM ad_week_table
BEGIN
FOR employee_rec
IN employees_in_10_cur
LOOP
DBMS_OUTPUT.put_line(employee_rec.ad_no || ',' || employee_rec.week_no);
END LOOP;
END;
执行此块时出现缺少关键字的错误。我做错了什么?
【问题讨论】:
这个问题似乎离题了,因为它过于本地化了 【参考方案1】:定义游标查询后加分号;
DECLARE
CURSOR employees_in_10_cur
IS
SELECT *
FROM ad_week_table;
BEGIN
FOR employee_rec
IN employees_in_10_cur
LOOP
DBMS_OUTPUT.put_line (
employee_rec.ad_no || ',' || employee_rec.week_no );
END LOOP;
END;
【讨论】:
【参考方案2】:光标末尾缺少分号:
CURSOR employees_in_10_cur
IS
SELECT *
FROM ad_week_table;
错误消息将始终为您提供发生错误的行号。请务必检查并查看该区域。
例如;如果我更改表格以便可以运行它,我会得到以下信息:
SQL> declare
2
3 cursor employees_in_10_cur is
4 select *
5 from user_tables
6
7 begin
8 for employee_rec in employees_in_10_cur loop
9 dbms_output.put_line (
10 employee_rec.ad_no || ',' || employee_rec.week_no );
11 end loop;
12 end;
13 /
for employee_rec in employees_in_10_cur loop
*
ERROR at line 8:
ORA-06550: line 8, column 8:
PL/SQL: ORA-00905: missing keyword
ORA-06550: line 4, column 5:
PL/SQL: SQL Statement ignored
ORA-06550: line 11, column 4:
PLS-00103: Encountered the symbol "END" when expecting one of the following:
begin function pragma procedure subtype type <an identifier>
<a double-quoted delimited-identifier> current cursor delete
exists prior
你有 3 个错误;一个在第 8 行,因为光标无效,一个在第 11 行,因为循环没有发生,因为光标无效,一个在第 4 行,上面写着“语句被忽略”。
【讨论】:
以上是关于Oracle 匿名 PL/SQL 块中缺少关键字错误的主要内容,如果未能解决你的问题,请参考以下文章
无法在 Oracle 匿名块中调用和执行 .sql 脚本文件
如何在匿名 PL/SQL 块中自动显示所有 SQL 语句的输出
我可以在调用同一过程后将 PL/SQL 过程放在匿名块中吗?