6

我有一个包含以下脚本的文件:

BEGIN
    ...
    a bunch of inserts
    ...
    COMMIT;

EXCEPTION
    WHEN OTHERS THEN ROLLBACK;
END;

当我在 sqlplus 中执行此操作时,我得到以下信息:

SQL> @file.sql
382

就好像他没有结束这个街区。我是使用 pl/sql 和 sqlplus 的新手,所以我不知道我是否做错了什么。

有任何想法吗?

4

2 回答 2

9

您需要在最后的 END 之后再添加一行;像这样:

/

只是一个斜线作为该行的第一个字符,然后是一个新行。

于 2010-02-17T15:12:48.587 回答
0

好的,我想通了。在此处发布问题之前,我应该在文档中进行更好的搜索。

无论如何根据这个链接:http: //download.oracle.com/docs/cd/B19306_01/server.102/b14357/ch4.htm#sthref840

SQL*Plus 以与 SQL 命令相同的方式处理 PL/SQL 子程序,不同之处在于分号 (;) 或空行不会终止并执行块。通过在新行上单独输入句点 (.) 来终止 PL/SQL 子程序。您还可以通过在新行中单独输入斜杠 (/) 来终止和执行 PL/SQL 子程序。

您必须以 / 结束而不是 END。

于 2010-02-17T15:14:33.903 回答