使用sqlplus打印错误

使用sqlplus打印错误,sql,oracle,sqlplus,Sql,Oracle,Sqlplus,下面您可以看到我试图在sqlplus上执行的SQL脚本模板: WHENEVER SQLERROR EXIT 1 ROLLBACK WHENEVER OSERROR EXIT 1 ROLLBACK BEGIN -- Doing some Insert END; / INSERT INTO TMP_TABLE VALUES('A', 'B') COMMIT; QUIT; / 该脚本在本地系统上的一个文件(Test1.sql)中可用,我通过Windows命令行控制台连接到Oracle来运行此

下面您可以看到我试图在sqlplus上执行的SQL脚本模板:

WHENEVER SQLERROR EXIT 1 ROLLBACK
WHENEVER OSERROR EXIT 1 ROLLBACK

BEGIN
 -- Doing some Insert
END;
/

INSERT INTO TMP_TABLE VALUES('A', 'B')

COMMIT;
QUIT;
/
该脚本在本地系统上的一个文件(Test1.sql)中可用,我通过Windows命令行控制台连接到Oracle来运行此查询。在命令行下方键入

C:\Users\myself> sqlplus UNAME/PWD@//DB IP:PORT/SID @C:\Users\Test1.sql
在SQL脚本中,我故意没有用分号终止一条语句
(插入到…
)。现在,当我按照上述说明运行此脚本时,程序将成功运行并打印一条消息:

SQL*Plus: Release 10.2.0.1.0 - Production on Fri Apr 6 16:50:19 2012

Copyright (c) 1982, 2005, Oracle.  All rights reserved.


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production
With the Partitioning, Automatic Storage Management, OLAP, Data Mining
and Real Application Testing options


PL/SQL procedure successfully completed.


Commit complete.

Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64
bit Production
With the Partitioning, Automatic Storage Management, OLAP, Data Mining
and Real Application Testing options
当我在SQL Navigator工具上运行同一组脚本时,我得到以下错误,这是正确的:

[10]:(错误):ORA-00933:SQL命令未正确结束

我不明白为什么脚本不报告此错误,而是显示类似“提交完成”的消息


当我试图使用Windows命令控制台通过sdlplus运行脚本时,您能告诉我如何使脚本在控制台上抛出此错误吗?

我的理解是,在sqlplus脚本中,一个空行终止sql语句。我没有要测试的Oracle环境,但是尝试删除插入和提交语句之间的空行,然后查看是否收到错误。我想您会看到它(它将充当一个连接的insert..commit语句)

请查看中的“执行命令”部分

具体而言:

结束SQL命令

可以通过以下三种方式之一结束SQL命令:

  • 用分号(;)
  • 用斜线(/)在一行上
  • 空行
注: 您可以使用SETSQLBLANKLINES命令(不在iSQL*Plus中)更改SQL语句中空行的显示和行为方式。有关更改空行行为的详细信息,请参见SET命令

对于SQLNavigator,不同的客户机工具将有不同的行为。SQLNavigator解释器的行为与sqlplus解释器不同。如果您因脚本问题致电Oracle支持人员,他们会问的第一件事是“在sqlplus中运行时是否看到此错误?”