【问题标题】:SQL*Plus - Spool CSV - SP2-0734: unknown command beginninSQL*Plus - 假脱机 CSV - SP2-0734:未知命令开始
【发布时间】:2015-05-13 15:46:18
【问题描述】:

当我启动以下任务 .cmd 时:

sqlplus -s User/Password@database @Query.sql 'G:'

我得到这个错误:

SP2-0734: unknown command beginnin

即使添加集合sqlblanklines on 也失败了。

使用像select * from table1 这样的简单查询就可以了。

使用更复杂的查询(多重连接,分组依据)它不起作用 => 即使文件生成良好。在文件中,我只找到错误详细信息。

请在下面找到有关该问题的更多详细信息:

SP2-0734: unknown command beginning "FROM NOTI...." - rest of line ignored.
SP2-0734: unknown command beginning "INNER JOIN..." - rest of line ignored.
SP2-0734: unknown command beginning "INNER JOIN..." - rest of line ignored.
SP2-0734: unknown command beginning "INNER JOIN..." - rest of line ignored.
SP2-0044: For a list of known commands enter HELP
and to leave enter EXIT.
SP2-0734: unknown command beginning "INNER JOIN..." - rest of line ignored.
SP2-0734: unknown command beginning "INNER JOIN..." - rest of line ignored.
SP2-0734: unknown command beginning "INNER JOIN..." - rest of line ignored.
SP2-0734: unknown command beginning "INNER JOIN..." - rest of line ignored.
SP2-0044: For a list of known commands enter HELP
and to leave enter EXIT.
SP2-0734: unknown command beginning "LEFT JOIN ..." - rest of line ignored.
SP2-0734: unknown command beginning "LEFT join ..." - rest of line ignored.
SP2-0734: unknown command beginning "LEFT join ..." - rest of line ignored.
SP2-0734: unknown command beginning "LEFT JOIN ..." - rest of line ignored.
SP2-0044: For a list of known commands enter HELP
and to leave enter EXIT.
SP2-0734: unknown command beginning "LEFT join ..." - rest of line ignored.
SP2-0734: unknown command beginning "LEFT join ..." - rest of line ignored.
SP2-0734: unknown command beginning "WHERE NOTI..." - rest of line ignored.
SP2-0734: unknown command beginning "GROUP BY N..." - rest of line ignored.
SP2-0044: For a list of known commands enter HELP
and to leave enter EXIT.
SP2-0734: unknown command beginning ",table1..." - rest of line ignored.
SP2-0734: unknown command beginning ",table2..." - rest of line ignored.

【问题讨论】:

  • 您声称该文件“生成良好”。 SQL*Plus 和/或 Oracle 指示存在语法错误。我倾向于相信甲骨文。仅当您尝试生成更复杂的脚本时它才会失败,这一事实只会使问题更有可能是您的脚本有错误。由于您没有向我们展示脚本,因此我们无法提供太多建议。
  • 可能有助于显示您的 Query.sql 文件,因为其中包含错误代码。并正确格式化所有错误消息。你为什么在标题中提到蟾蜍?假脱机和 CSV 似乎也不相关,即使您在未显示的文件中这样做。
  • 您好 @AlexPoole 和 JustinCave 感谢您的回复。对不起,你是对的,我只是用 SQL 脚本编辑我的帖子。你知道这个问题吗?确实这个脚本我不使用 toad,只使用 SQL*Plus。
  • 您好 AlexPoole 和 @JustinCave 感谢您的回复。对不起,你是对的,我只是用 SQL 脚本编辑我的帖子。你知道这个问题吗?确实这个脚本我不使用 toad,只使用 SQL*Plus。

标签: sql oracle sqlplus


【解决方案1】:

默认情况下,SQL*Plus 处理空行as terminating the previous command

SQL 语句或脚本中的空行告诉 SQL*Plus,您已完成输入命令,但还不想运行它。

FROM 之前的第一个空行终止了 SELECT - 但它没有被执行,因为最后一行末尾没有分号,而下一行没有 /线。部分SELECT 保存在语句缓冲区中,但从不执行。

SQL*Plus 然后尝试解释文件的其余部分,但由于后续的每一行都没有以它识别为 SQL 的内容开头,并且不是 SQL*Plus 命令,因此您会得到 SP2-0044他们。

您可以删除语句中间的空行;或在脚本开头发出SET SQLBLANKLINES ON

控制 SQL*Plus 是否在 SQL 命令或脚本中放置空行。 ON 将空行和新行解释为 SQL 命令或脚本的一部分。 OFF,默认值,不允许在 SQL 命令或脚本或脚本中出现空行或新行。

【讨论】:

    【解决方案2】:

    即使我尝试了 SET SQLBLANKLINES ON 但没有运气,我也遇到了同样的问题。我终于发现问题出在文件编码格式上。实际上,我曾经使用 Visual Studio 保存我的 sql 文件,它将文件保存为 utf-8 编码格式。

    解决方案-在记事本中打开sql文件->另存为ANSI编码格式。它有效。

    【讨论】:

    • 是的,但这与此问题中发布的问题不同,即使错误消息相同。编码问题是由 sqlplus 不兼容的 utf8 文件中的 BOM 引起的。看到这个问题:stackoverflow.com/questions/10758094/…
    【解决方案3】:

    SET SQLBLANKLINES ON 在我使用 cmd 脚本运行并将 sqlplus 结果保存为 txt 文件的情况下不起作用。

    一旦我在“PROMPT”注释行和我的选择语句的第一行之间添加了一个空白行,错误就消失了。之前,我的 select 语句行位于 PROMPT 行的正下方,会生成 SP2-0734。

    【讨论】:

      猜你喜欢
      • 2011-02-03
      • 2022-06-13
      • 1970-01-01
      • 2012-07-30
      • 1970-01-01
      • 2020-07-02
      • 2019-04-22
      • 2021-10-11
      • 2014-05-22
      相关资源
      最近更新 更多