我有一个包含以下脚本的文件:
BEGIN
...
a bunch of inserts
...
COMMIT;
EXCEPTION
WHEN OTHERS THEN ROLLBACK;
END;
当我在 sqlplus 中执行此操作时,我得到以下信息:
SQL> @file.sql
382
就好像他没有结束这个街区。我是使用 pl/sql 和 sqlplus 的新手,所以我不知道我是否做错了什么。
有任何想法吗?
您需要在最后的 END 之后再添加一行;像这样:
/
只是一个斜线作为该行的第一个字符,然后是一个新行。
好的,我想通了。在此处发布问题之前,我应该在文档中进行更好的搜索。
无论如何根据这个链接:http: //download.oracle.com/docs/cd/B19306_01/server.102/b14357/ch4.htm#sthref840
SQL*Plus 以与 SQL 命令相同的方式处理 PL/SQL 子程序,不同之处在于分号 (;) 或空行不会终止并执行块。通过在新行上单独输入句点 (.) 来终止 PL/SQL 子程序。您还可以通过在新行中单独输入斜杠 (/) 来终止和执行 PL/SQL 子程序。
您必须以 / 结束而不是 END。