Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle (PLS-00103:在简单的声明游标语句和循环选择数据时遇到符号“;”)_Oracle_Plsql - Fatal编程技术网

Oracle (PLS-00103:在简单的声明游标语句和循环选择数据时遇到符号“;”)

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

每次我想在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 "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,但现在我在谷歌上搜索过它,有类似问题的人被告知要完全按照你所做的去做。我很高兴你把它修好了!