当SQL命令分隔符设置为斜杠(/
)时,是否可以使用SQL * Plus进行多行注释?
以下内容将引发错误:
/* ----------------------------------
* Random comment
---------------------------------- */
错误消息为
/* ----------------------------------
* Random comment
---------------------------------- *
[ERROR] java.sql.SQLSyntaxErrorException: ORA-00900: invalid SQL statement
显然,结束注释被解释为语句终止符。
我们在定义包时使用它:
create package Foo AS
/* ----------------------------------
* Bar returns baz
---------------------------------- */
PROCEDURE Bar(baz OUT SYS_REFCURSOR)
IS
BEGIN
OPEN baz FOR
SELECT abc
FROM ttt;
END bar;
END Foo;
/
注意:我们实际上使用maven-sql-plugin来运行它,但我告诉它遵循SQL * Plus语法?
我们的POM设置如下:
<autocommit>true</autocommit>
<delimiter>/</delimiter>
<delimiterType>normal</delimiterType>
<orderFile>ascending</orderFile>
<onError>continue</onError>
<keepFormat>true</keepFormat>
答案 0 :(得分:0)
SQL PLus允许评论,请参阅以下测试
但是你试图在包本身中创建一个过程定义,而不是在包体中创建一个过程定义,这可能是错误的原因。
包裹只能包含程序声明
过程定义必须在包体中。
SQL> create package Foo AS
2 /* ----------------------------------
3 * Bar returns baz
4 ---------------------------------- */
5 PROCEDURE Bar(baz OUT SYS_REFCURSOR);
6 end;
7 /
Package created.
SQL> create package body Foo As
2 /* ----------------------------------
3 * Bar returns baz
4 ---------------------------------- */
5 PROCEDURE Bar(baz OUT SYS_REFCURSOR)
6 IS
7 BEGIN
8 OPEN baz FOR
9 SELECT abc
10 FROM ttt;
11 END bar;
12 END Foo;
13 /
Package body created.