4

Oracle SQL*Plus 将 at 符号解释为运行 SQL 脚本@的命令。

我有一个.sql脚本,其中包含@注释中的字符,例如:

create or replace package mypkg
as

  /*
    Procedure foo

    @param bar blah blah blah
  */
  procedure foo(bar varchar2);

end mypkg;
/

如何禁用 at 符号的处理?我已经在使用SET DEFINE OFFSET SQLPREFIX OFF禁用不需要的元字符处理。

4

2 回答 2

4

有几种方法可以禁用 START 命令(包括 @ 和 @@ 命令)。

一种方法是在 PRODUCT_USER_PROFILE(实际上是 SYSTEM.PRODUCT_PRIVS 的同义词)中放置一个适当的条目。为此,请执行类似于

INSERT INTO PRODUCT_USER_PROFILE
  (PRODUCT,     USERID, ATTRIBUTE, CHAR_VALUE)
VALUES
  ('SQL*Plus', 'DUMMY', 'START',   'DISABLED')

这要求您使用的用户 ID 对 PRODUCT_USER_PROFILE 具有 INSERT 权限。

第二种方法是在启动 SQL*Plus 时使用带有参数 3 的 -RESTRICT 选项。这可能更简单,但是您可能需要启用 -RESTRICT 3 禁用的其他命令,例如 SPOOL。有关详细信息,请参阅本页标题为“限制选项”的部分。

分享和享受。

于 2012-08-20T11:25:24.460 回答
3

我多年来一直使用这种注释符号,所以我很惊讶这是一个问题。我使用包“pldoc” http://sourceforge.net/projects/pldoc/?source=directory来生成文档。标准的注释方式是这样的(如 javadoc):

create or replace package mypkg
as

  /**
  * Procedure foo
  * 
  * @param bar blah blah blah
  */
  procedure foo(bar varchar2);

end mypkg;
/

me@XE> @mypkg.sql

Package created.
于 2012-08-20T19:56:42.920 回答