4

Oracle SQL * Plusは、アットマークをSQLスクリプト@を実行するコマンドとして解釈します。

コメントに次のような文字を.sql含むスクリプトがあります。@

create or replace package mypkg
as

  /*
    Procedure foo

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

end mypkg;
/

アットマークの処理を無効にするにはどうすればよいですか?私はすでにメタ文字の不要な処理を使用SET DEFINE OFFして無効にしています。SET SQLPREFIX OFF

4

2 に答える 2

4

START コマンド (@ および @@ コマンドを含む) を無効にする方法はいくつかあります。

1 つの方法は、PRODUCT_USER_PROFILE (実際には SYSTEM.PRODUCT_PRIVS の同義語) に適切なエントリを配置することです。そのためには、次のように INSERT を実行します。

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

これには、使用しているユーザー ID が PRODUCT_USER_PROFILE に対する INSERT 権限を持っている必要があります。

2 番目の方法は、SQL*Plus の開始時に引数 3 を指定して -RESTRICT オプションを使用することです。これはより簡単かもしれませんが、SPOOL など、有効にする必要がある場合がある -RESTRICT 3 によって無効にされる追加のコマンドがあります。詳細については、このページの「RESTRICT オプション」というタイトルのセクションを参照してください。

共有してお楽しみください。

于 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 に答える