Oracle (PLS-00103:在简单的声明游标语句和循环选择数据时遇到符号“;”)
每次我想在Oracle SQL中声明简单变量时,我都会变成PLS-00103错误 声明游标my_数据为 选择ID、名称 从名字 其中名称在'name1'、'name2'、'name3'中; 开始 对于我的_数据循环中的i dbms_output.put_linei.ID; 端环; 终止 我所犯的错误:Oracle (PLS-00103:在简单的声明游标语句和循环选择数据时遇到符号“;”),oracle,plsql,Oracle,Plsql,每次我想在Oracle SQL中声明简单变量时,我都会变成PLS-00103错误 声明游标my_数据为 选择ID、名称 从名字 其中名称在'name1'、'name2'、'name3'中; 开始 对于我的_数据循环中的i dbms_output.put_linei.ID; 端环; 终止 我所犯的错误: [Code: 6550, SQL State: 65000] ORA-06550: Zeile 4, Spalte 45: PLS-00103: Fand das Symbol "en
[Code: 6550, SQL State: 65000] ORA-06550: Zeile 4, Spalte 45:
PLS-00103: Fand das Symbol "end-of-file" als eines der folgenden erwartet wurde:
;
[Script position: 116 - 117]
DECLARE CURSOR my_data IS
SELECT ID, NAME
FROM NAMES
WHERE NAME IN ('name1', 'name2', 'name3')
[Code: 900, SQL State: 42000] ORA-00900: Ungültige SQL-Anweisung
[Script position: 188 - 191] END LOOP
[Code: 900, SQL State: 42000] ORA-00900: Ungültige SQL-Anweisung
[Script position: 198 - 202] END
甲骨文为何不承认;我在语句末尾使用的符号?在声明游标之后,我想在这个列表上做一个循环,并使用名称作为insert语句的一部分
我使用DBVisualizer Pro 11。您需要更多。PL/SQL块必须有一个开始-结束,您将在其中处理该游标。因此,您通常会看到
DECLARE CURSOR my_data IS
SELECT ID, NAME
FROM NAMES
WHERE NAME IN ('name1', 'name2', 'name3');
BEGIN
for i in my_data loop
...
...
end loop;
END;
你需要更多。PL/SQL块必须有一个开始-结束,您将在其中处理该游标。因此,您通常会看到
DECLARE CURSOR my_data IS
SELECT ID, NAME
FROM NAMES
WHERE NAME IN ('name1', 'name2', 'name3');
BEGIN
for i in my_data loop
...
...
end loop;
END;
您发布的代码可以:
SQL> select * from names;
ID NAME
---------- ----------
7782 CLARK
7839 KING
7934 MILLER
SQL> SET SERVEROUTPUT ON
SQL> DECLARE
2 CURSOR my_data IS
3 SELECT ID, NAME
4 FROM NAMES
5 WHERE NAME IN ('CLARK', 'KING', 'MILLER');
6 BEGIN
7 FOR i IN my_data
8 LOOP
9 DBMS_OUTPUT.put_line (i.ID);
10 END LOOP;
11 END;
12 /
7782
7839
7934
PL/SQL procedure successfully completed.
SQL>
你用什么工具?这就是你写的全部剧本吗?因为,有些工具不允许命令彼此相邻,它们之间至少需要一条空行。您发布的代码可以:
SQL> select * from names;
ID NAME
---------- ----------
7782 CLARK
7839 KING
7934 MILLER
SQL> SET SERVEROUTPUT ON
SQL> DECLARE
2 CURSOR my_data IS
3 SELECT ID, NAME
4 FROM NAMES
5 WHERE NAME IN ('CLARK', 'KING', 'MILLER');
6 BEGIN
7 FOR i IN my_data
8 LOOP
9 DBMS_OUTPUT.put_line (i.ID);
10 END LOOP;
11 END;
12 /
7782
7839
7934
PL/SQL procedure successfully completed.
SQL>
你用什么工具?这就是你写的全部剧本吗?因为,有些工具不允许命令彼此相邻,并且它们之间至少需要一条空行。我找到了一个解决方案,问题在于DbVisualizer 要在DBVisualizer中执行PL/SQL语句,我还需要在第一行代码之前和最后一行代码之后添加-/命令 因此,代码应该特别如下所示: -/ 声明游标my_数据为 选择ID、名称 从名字 其中名称在'name1'、'name2'、'name3'中; 开始 对于我的_数据循环中的i dbms_output.put_linei.ID; 端环; 终止 /
我找到了一个解决方案,问题是DbVisualizer 要在DBVisualizer中执行PL/SQL语句,我还需要在第一行代码之前和最后一行代码之后添加-/命令 因此,代码应该特别如下所示: -/ 声明游标my_数据为 选择ID、名称 从名字 其中名称在'name1'、'name2'、'name3'中; 开始 对于我的_数据循环中的i dbms_output.put_linei.ID; 端环; 终止 /
Hello Connor McDonalds,不幸的是它不起作用,SQL会抛出更多错误,我扩展了我的问题,并在迭代和声明期间添加了更多关于错误的信息。Hello Connor McDonalds,不幸的是它不起作用,SQL会抛出更多错误,我已经扩展了我的问题,并在迭代和声明期间添加了更多关于错误的信息。在声明之后添加一个换行符。除此之外,您的代码看起来还不错。@WernfriedDomscheit新行没有帮助。我甚至不认为这会有什么帮助,因为SQL是缩进和换行不敏感的。除此之外,您的代码看起来还不错。@WernfriedDomscheit新行没有帮助。我甚至不认为这会有什么帮助,因为SQL是缩进和换行不敏感的。我使用DBVisualizer Pro 11.0.5,我只在SQL Commander选项卡中运行这个脚本。我找到了解决方案。。当我想在DBVisualizer中执行PL/SQL语句时,我也需要在第一行代码之前和最后一行代码之后添加-/at。感谢您提供有关工具设置的提示!正当我从未使用过DBVisualizer,但现在我在谷歌上搜索过它,有类似问题的人被告知要完全按照你所做的去做。我很高兴你把它修好了!我使用DBVisualizer Pro 11.0.5,在SQL Commander选项卡中仅运行此脚本。我找到了解决方案。。当我想在DBVisualizer中执行PL/SQL语句时,我也需要在第一行代码之前和最后一行代码之后添加-/at。感谢您提供有关工具设置的提示!正当我从未使用过DBVisualizer,但现在我在谷歌上搜索过它,有类似问题的人被告知要完全按照你所做的去做。我很高兴你把它修好了!