SqlPlus SP2-0734:错误

mak*_*ako 20 sql unix oracle sqlplus

我是新手使用SqlPlus但不是新手使用SQL,我在编辑器中编写并尝试运行我编写的脚本后出现以下错误.所有这些看起来都是有效的,并且适用于sql小提琴...我不确定是什么问题.有任何想法吗??我创建的文件似乎都没有工作....

SQL> start sales.sq;
Run Code Online (Sandbox Code Playgroud)

其中包含

1  create table salesreps
2  (empl_num number(3,0) primary key,
3  name varchar2(15) not null,
4  age number(3,0),
5  rep_office number(2,0),
6  title varchar2(10),
7  hire_date varchar2(10) not null,
8  manager number(3,0),
9  quota number(10,2),
10 sales number(10,2) not null);
Run Code Online (Sandbox Code Playgroud)

生成以下错误

SP2-0734: unknown command beginning "name varch..." - rest of line ignored.
SP2-0734: unknown command beginning "age number..." - rest of line ignored.
SP2-0734: unknown command beginning "rep_office..." - rest of line ignored.
SP2-0734: unknown command beginning "title varc..." - rest of line ignored.
SP2-0044: For a list of known commands enter HELP
and to leave enter EXIT.
SP2-0734: unknown command beginning "hire_date ..." - rest of line ignored.
SP2-0734: unknown command beginning "manager nu..." - rest of line ignored.
SP2-0734: unknown command beginning "quota numb..." - rest of line ignored.
SP2-0734: unknown command beginning "sales numb..." - rest of line ignored.
SP2-0044: For a list of known commands enter HELP
and to leave enter EXIT.
Run Code Online (Sandbox Code Playgroud)

APC*_*APC 28

默认情况下,SQL*Plus不喜欢空行.但是,我们可以轻松配置SQL*Plus环境以忽略它们:

SQL>  set sqlblanklines on
Run Code Online (Sandbox Code Playgroud)

我们也可以将设置放在我们的glogin.sql文件中(假设我们允许编辑它,但情况并非总是如此).

请注意,此参数在客户端的古老版本中不起作用.


小智 5

正如评论中提到的,此问题可能是由 UTF-8 BOM(字节顺序标记)编码引起的。通过将文件内容复制到 Notepad++ 可以轻松修复它。

在我们的示例中,在 Azure DevOps 中编辑 sql 文件时,编码从 UTF-8 更改为 UTF-8 BOM。

说明:当您以 UTF-8 格式保存文件时,某些编辑器会自动添加这些字节。其中一些让您可以选择不保存这些字节,这通常是最好的选择。要删除这些字节,请尝试使用 Notepad++ 等编辑器,它可以让您选择不保存这些字符。