ヘッダーをスキップ
Oracle Rdb SQLリファレンス・マニュアル
リリース7.2
E06178-01
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

例5: マルチスキーマ・データベースの問合せアウトラインのSTORED NAMEの変更

この例では、マルチスキーマのアウトラインのSTORED NAMEの変更方法を示します。明示的にSTORED NAMEを記述していますが、SQLの場合も同じ技術を使用して、アウトラインに対する一意のSTORED NAMEを生成できます。


SQL> attach 'filename mschema';
SQL> create outline SHOW_TABLE
cont>   stored name SHOW_TABLE_01
cont>   on procedure name SHOW_TABLES;
SQL> commit;
SQL> disconnect all;
SQL> attach 'filename mschema MULTISCHEMA IS OFF';
SQL> alter outline SHOW_TABLE_01
cont>    rename to SHOW_THE_TABLES;
SQL> commit;


ALTER PROCEDURE文

CREATE MODULE文またはCREATE PROCEDURE文を使用して作成されたプロシージャの属性を変更できます。

次のように使用できます。


環境

ALTER PROCEDURE文は次の環境で使用できます。


形式







引数

BIND ON CLIENT SITE

BIND ON SERVER SITE

外部ルーチン実行の実行モデルおよび環境を選択します。

CLIENTサイト・バインディングにより、外部ルーチンがアクティブ化され、OpenVMSデータベース・クライアント(アプリケーション)・プロセスで実行されます。これはデフォルトのバインディングです。このバインディングによって最も効率的な実行特性が提供され、I/Oデバイスなどのリソースを共有し、外部ルーチンをクライアント・アプリケーションの一部と同様にデバッグできます。ただし、このバインディングはアドレス空間の制限を受ける場合があります。データベース・バッファと仮想メモリーを共有しているため、このバインディングはクライアント・プロセスのシステム・ユーザー環境に限定されており、高レベルの権限が必要なアプリケーションの実行時に、外部ルーチンを実行することは禁止されています。

SERVERサイト・バインディングにより、外部ルーチンがデータベース・クライアントおよびサーバーとは別のプロセスでアクティブ化されます。このプロセスは、データベース・プロセスと同じノードで開始されます。このバインディングでは、適切な実行特性、より大きいアドレス空間、実際のセッション・ユーザー環境が提供され、高レベルの権限によるクライアント・プロセス制約を受けません。ただし、このバインディングでは、クライアントとI/Oデバイスなどのリソースを共有できないため(特に、クライアント対話型端末への接続がないため)、一般的にルーチンをデバッグできません。

BIND SCOPE CONNECT

BIND SCOPE TRANSACTION

外部ルーチンがアクティブ化される有効範囲と、外部ルーチンが非アクティブ化されるポイントを定義します。デフォルトの有効範囲はCONNECTです。

COMMENT IS string

プロシージャに関するコメントを追加します。SQLでは、SHOW PROCEDURES文の実行時にコメントのテキストが表示されます。コメントは一重引用符(')で囲み、コメント内の複数の行はスラッシュ(/)で区切ります。

この句は、COMMENT ON PROCEDURE文と同義です。

COMPILE

COMPILEオプションにより、Oracle Rdbサーバーで強制的にストアド(SQL)・プロシージャを再コンパイルします。外部プロシージャには反映されません。

DROP... CASCADE操作の実行によってプロシージャが無効化されている場合は、COMPILEを使用します。このメカニズムは、以前のバージョンで使用可能なSET FLAGS 'VALIDATE_ROUTINE'メソッドより優先されます。

DEFAULT LOCATION

LOCATION 'image-location'

外部ルーチン・イメージのデフォルトの位置または特定の位置です。結果ファイルの仕様には、タイプ.exeが含まれている必要があります。

これは、イメージ・ファイルの仕様または単に論理名になります。

SQLでは、次の要素の組合せに基づいてルーチンを選択します。

external-body-clause

ルーチン名、ルーチンの実行可能イメージの位置、ルーチンをコーディングする言語など、ルーチンのキー特性を識別します。

external-body-name

外部ルーチン名です。この名前を指定しない場合は、external-routine-name句で指定した名前がSQLに使用されます。

この名前により、ルーチン本体の起動ごとにコールされるルーチン・エントリ・アドレスが定義されます。location句で選択された外部ルーチン・イメージには、この名前付きルーチンが必要です。

引用符付きでない名前は、大文字に変換されます。

LANGUAGE language-name

外部ルーチンがコーディングされたホスト言語の名前です。ADA、C、COBOL、FORTRAN、PASCALまたはGENERALを指定できます。GENERALキーワードを使用すると、任意の言語で記述したルーチンをコールできます。

言語固有の情報の詳細は、「使用方法」を参照してください。

notify-clause

特定の外部ルーチンまたはデータベース関連のイベントが発生した場合に、2番目に呼び出される(通知される)ルーチンの名前を指定します。この名前により、通知ルーチンの起動ごとにコールされるルーチン・エントリ・アドレスが定義されます。location句で選択された外部ルーチン・イメージには、この名前付きルーチンが必要です。

通知ルーチンに関連するイベントはON BIND、ON CONNECTおよびON TRANSACTIONです。複数のイベントを指定できます。

次に、イベントと各イベントの有効範囲について説明します。

  BIND ルーチンのアクティブ化からルーチンの非アクティブ化
  CONNECT データベース・アタッチからデータベース切断
  TRANSACTION 開始トランザクションからコミットまたはロールバック・トランザクション

RENAME TO

変更するプロシージャの名前を変更します。詳細は、「RENAME文」を参照してください。新規名がシノニム名である場合は、エラーが発生します。

使用方法


例1: 新規ルーチンおよび共有可能イメージをターゲットとしたALTER PROCEDUREの使用

この例では、外部プロシージャの位置、ルーチン名および言語を更新しているALTER PROCEDUREを示します。


SQL> show procedure SEND_MAIL
Information for procedure SEND_MAIL

 Procedure ID is: 261
 External Location is: SYS$SHARE:SENDMAILSHR.EXE
 Entry Point is: SEND_MAIL
 Language is: COBOL
 GENERAL parameter passing style used
 Number of parameters is: 2

Parameter Name                  Data Type        Domain or Type
--------------                  ---------        --------------
USR                             CHAR(30)
        Parameter position is 1
        Parameter is IN (read)
        Parameter is passed by reference

TXT                             VARCHAR(1000)
        Parameter position is 2
        Parameter is IN (read)
        Parameter is passed by reference

SQL> /*
***> The routine has been rewritten.  Use ALTER PROCEDURE
***> to retarget the external routine to use the new
***> implementation, instead of using DROP/CREATE
***> */
SQL>
SQL> set quoting rules 'SQL99';
SQL>
SQL> alter procedure SEND_MAIL
cont>     name "send_mail_ext"
cont>     location 'SYS$SHARE:SENDMAILSHR30.EXE'
cont>     language C
cont>     comment 'Use new V3.0 interface routine';
SQL>


ALTER PROFILE文

プロファイル定義を変更します。

環境

ALTER PROFILE文は次の環境で使用できます。


形式




引数

COMMENT IS 'string'

プロファイルに関するコメントを追加します。SQLでは、SHOW PROFILES文の実行時にコメントのテキストが表示されます。コメントは一重引用符(')で囲み、コメント内の複数の行はスラッシュ(/)で区切ります。

NO DEFAULT TRANSACTION

NO TRANSACTION MODES

NO LIMIT CPU TIME

NO LIMIT ROWS

NO LIMIT TIME

これらのオプションにより、明示的に否定形の属性設定が記録されます。これらの句により、否定された句の現在の設定が削除されます。

RENAME TO

変更中のプロファイル名を変更します。詳細は、「RENAME文」を参照してください。

ALTER PROFILEでサポートされている他のすべての属性の説明は、「CREATE PROFILE文」を参照してください。


使用方法


次の例では、既存のプロファイルのデフォルトのトランザクションが変更されます。


SQL> ALTER PROFILE DECISION_SUPPORT
cont>   DEFAULT TRANSACTION READ ONLY;


ALTER ROLE文

ロール名を変更したり、ロールにコメントを追加できます。

環境

ALTER ROLE文は次の環境で使用できます。


形式




引数

COMMENT IS 'string'

ロールに関するコメントを追加します。SQLでは、SHOW ROLES文の実行時にコメントのテキストが表示されます。コメントは一重引用符(')で囲み、コメント内の複数の行はスラッシュ(/)で区切ります。

IDENTIFIED EXTERNALLY

NOT IDENTIFIED

SQLがオペレーティング・システムからロールを継承するかどうかを指定します。これらの句のいずれかを指定する場合、ロール作成時に指定した句を指定する必要があります。IDENTIFIED EXTERNALLYからNOT IDENTIFIEDにまたはNOT IDENTIFIEDからIDENTIFIED EXTERNALLYにロールを変更する場合、ALTER ROLE文は使用できません。

IDENTIFIED EXERNALLY句は、SQLがOpenVMS権利識別子など、オペレーティング・システムのファシリティで定義されたロールを継承することを示します。

NOT IDENTIFIED句は、SQLがオペレーティング・システムのファシリティで定義されたロールを継承せず、ロールはデータベース固有であることを示します。

RENAME TO new-role-name

ロールに付与された権限を変更せずに、既存のロール名を新規ロール名に変更します。部門の名前が変更された場合に、部門名に対応するロールの名前を変更するとします。たとえば、人事部の名前が人事管理部に変更される場合、その部門で使用されるロールをPERSONNELからHUMAN_RESOURCESに変更します。新規ロール名は、データベースにすでに存在しているもの以外にする必要があります。トランザクションがコミットされると、古いロール名はデータベースから削除されます。古いロール名は、必要に応じて再作成または再使用できます。新規ロール名が外部で識別される場合、オペレーティング・システム・グループまたは権利識別子として存在する必要があります。

詳細は、「RENAME文」を参照してください。

role-name

(CREATE ROLE文で作成されたロールなど)既存のロールの名前です。

使用方法


例1: ロール名の変更


SQL> -- Change the name of the role from WRITER to DOCUMENTATION.
SQL> -- Any privileges granted to the role WRITER are transferred to the role
SQL> -- DOCUMENTATION. The role WRITER is deleted from the database.
SQL> ALTER ROLE WRITER
cont> RENAME TO DOCUMENTATION;
SQL> SHOW ROLES;
Roles in database with filename mf_personnel.rdb
     DOCUMENTATION


ALTER SEQUENCE文

順序を変更します。順序は、複数のユーザーが一意の整数を生成するためのデータベース・オブジェクトです。順序を使用して、主キーの値を自動的に生成できます。

環境

ALTER SEQUENCE文は次の環境で使用できます。


形式





引数

CACHE numeric-value

NOCACHE

CACHE句は、Oracle Rdbで事前に割り当てられ、アクセスを迅速にするためにメモリーに保持される順序の値の数を指定します。数値は2〜2147483647の範囲である必要があります。順序番号の一定のサイクルに収まる値を超える値はキャッシュできません。したがって、CACHE句に使用できる最大値は、次の式の結果値未満にする必要があります。


(MAXVALUE-MINVALUE)/ABS(INCREMENT)

現在のCACHE値が2以上の場合、その値を変更できます。CACHE値を変更する場合、その順序の既存ユーザーは継続して元の設定を使用します。SET FLAGS 'SEQ_CACHE'文を使用して、シングル・プロセスのキャッシュ・サイズを調整できます。詳細は、「SET FLAGS文」を参照してください。

NOCACHEが現在有効であるか、CACHEの値が1の場合、CACHE値を変更できますが、その順序の他のユーザーがCACHEに対するロックを解除するまで待機する必要がある場合があります。(CACHEの値1は、NOCACHEと同等です。)詳細は、「使用方法」を参照してください。

特定の順序のキャッシュは、順序からの番号の初回リクエスト時に、キャッシュが空であり、値がリクエストされた場合に、その順序から移入されます。システム障害の発生時や、キャッシュが解放された場合、フェッチされていない値は破棄されます。失われる値の最大数は、その時点のキャッシュ・サイズと等しくなります。これはCACHEまたはSET FLAGS SEQ_CACHEオプションで指定される値になります。

NOCACHE句では、その都度割り当てられる値を指定します。これは、Rbcルート・ファイルに対するI/OがCACHE値の使用時より大きくなります。

CACHE値を変更した後でも、CACHEの値を変更した時点でその順序を使用していたユーザーは継続して元の設定を使用します。

COMMENT IS 'string'

順序に関するコメントを追加します。SQLでは、SHOW SEQUENCE文の実行時にコメントのテキストが表示されます。コメントは一重引用符(')で囲み、コメント内の複数の行はスラッシュ(/)で区切ります。

CYCLE

NOCYCLE

CYCLE句は、MINVALUEまたはMAXVALUEに達した後も、順序によって値の生成を継続することを指定します。昇順でMAXVALUEに達した後、順序はそのMINVALUEから再開されます。降順でMINVALUEに達した後、順序はそのMAXVALUEから再開されます。NOCYCLE句は、値が最小値または最大値に達した後は、順序によって生成を継続しないことを指定します。この制限を超えて順序を増やそうとすると、エラーが発生します。

CYCLE句を変更した後でも、CYCLEを変更した時点でその順序を使用していたユーザーは継続して元の設定を使用します。

INCREMENT BY numeric-value

順序の増分サイズおよび方向(昇順または降順)を指定します。この数値は-2147483648〜2147483647の(0を除く)範囲である必要があります。絶対値はMAXVALUEとMINVALUEの差異未満である必要があります。負の値によって降順が、正の値によって昇順が指定されます。既存の値が正の値の場合、新規の値も正の値である必要があります。同様に、既存の値が負の値の場合、新規の値も負の値である必要があります。つまり、順序は昇順から降順または降順から昇順には変更できません。

MAXVALUE numeric-value

NOMAXVALUE

MAXVALUE句は、順序によって生成される最大BIGINT値を指定します。昇順の場合、新規最大値は既存のRDB$NEXT_SEQUENCE_VALUE以上である必要があります。降順の場合、新規最大値は既存のMAXVALUE以上である必要があります。これにより、MAXVALUEの値は現在発行されている値以上になります。また、数値は-9223372036854775808〜9223372036854775808の範囲である必要があります。MAXVALUEはMINVALUE句で指定した値を超えている必要があります。NOMAXVALUE句は、昇順の最大値を9223372036854775808(およびキャッシュ・サイズを減算)、および降順の最大値を-1に指定します。デフォルトはNOMAXVALUE句です。

MAXVALUE TINYINT

MAXVALUE SMALLINT

MAXVALUE INTEGER

MAXVALUE BIGINT

SQLでは、数値ではなく、キーワードTINYINT、SMALLINT、INTEGERおよびBIGINTをMAXVALUEに使用できます。これにより、これらのデータ型で使用される順序の範囲設定が簡単になります。指定される値は、このデータ型に割当て可能な正の値の最大値になります。

SQLでは、数値ではなく、キーワードTINYINT、SMALLINT、INTEGERおよびBIGINTをMAXVALUEに使用できます。これにより、これらのデータ型で使用される順序の範囲設定が簡単になります。指定される値は、このデータ型に割当て可能な正の値の最大値になります。

MINVALUE numeric-value

NOMINVALUE

MINVALUE句は、順序によって生成される最小符号付きquadword(BIGINT)値を指定します。昇順の場合、新規最小値は既存のMINVALUE以下である必要があります。降順の場合、新規最小値は既存のRDB$NEXT_SEQUENCE_VALUE以下である必要があります。これにより、最小値は現在発行されている値未満になります。また、数値は-9223372036854775808以上である必要があります。MINVALUEはMAXVALUE句で指定した値未満である必要があります。NOMINVALUE句は、昇順の最小値を1、降順の最小値を-9223372036854775808(およびキャッシュ・サイズを加算)に指定します。

デフォルトはNOMINVALUE句です。

MINVALUE TINYINT

MINVALUE SMALLINT

MINVALUE INTEGER

MINVALUE BIGINT

SQLでは、数値ではなく、キーワードTINYINT、SMALLINT、INTEGERおよびBIGINTをMINVALUEに使用できます。これにより、これらのデータ型で使用される順序の範囲設定が簡単になります。指定される値は、このデータ型に割当て可能な負の値の最小値になります。

ORDER

NOORDER

ORDER句は、それぞれのリクエスト・プロセスに順序番号が必ず順に割り当てられることを指定します。つまり、正確なリクエスト履歴が保持されます。NOORDER句は、順序番号が必ずしもリクエストの順序で生成されないことを指定します。

RANDOMIZE

NORANDOMIZE

RANDOMIZE句は、BIGINT値の最上位バイトにおいて、ランダムな値で順序番号が返されることを指定します。これによって、ランダムに配布される一意の値が生成されます。NORANDOMIZE句を指定すると、順序番号は同時に作成された他の値に近いものになります。

RANDOMIZE句の利点は、格納した索引の列を更新すると、その値が索引構造の様々な場所に記述されることです。これにより、索引の別の場所にある下位ノードを個別に更新できるため、大規模な索引への同時アクセスが向上します。対照的に、NORANDOMIZE句を指定した場合に生成される順序番号の数値は、同時に生成される他の順序値に近いものになります。これにより、同一または類似する索引ノードの索引が更新され、ソート索引の一部で競合が発生する場合があります。

順序に対して返されるBIGINT値のすべての値範囲が使用されます。このため、NOMAXVALUE句とNOMINVALUE句は順序定義に指定(またはデフォルト設定)する必要があります。BIGINT値の最上位ビットは、ランダムに生成された正の値に設定されます。生成された個別値は、最下位32ビットで返され、その独自性が保たれます。CYCLE句も指定する場合は、最下位32ビットのみが循環します。RDB$SEQUENCES表のRDB$NEXT_SEQUENCE_VALUE列で問合せを実行すると、NEXTVAL疑似列が参照されるまで最上位ビットは割り当てられないため、最下位ビットに生成された値のみが返されます。

RANDOMIZEを指定すると、ORDER、MAXVALUEまたはMINVALUEは指定できなくなります。

RENAME TO

変更する順序の名前を変更します。詳細は、「RENAME文」を参照してください。新規名がシノニム名である場合は、エラーが発生します。

新規名は、既存の順序、シノニム、表またはビューに存在しているもの以外にする必要があります。システム・シーケンスの名前は変更できません。

RENAME TO句には、このデータベースに対して有効なシノニムが必要です。「ALTER DATABASE文」のSYNONYMS ARE ENABLED句に関する説明を参照してください。これらのシノニムがデータベース定義またはアプリケーションによって使用されていない場合は、削除される可能性があります。

RESTART WITH

RESTART WITH句によりデータベース管理者は、順序を指定値にリセットできます。値は、MINVALUEからMAXVALUEの範囲内である必要があります。このコマンドでは、順序への排他アクセスが必要です。ALTER SEQUENCE文が正常にコミットされると、順序を使用するアプリケーションは、再開された値に基づく値から開始されます。

注意

IDENTITY列のある表に発行されたTRUNCATE TABLE文により、順序のALTER SEQUENCE...RESTART WITHプロセスが暗黙的に実行され、昇順の場合はMINVALUE、降順の場合はMAXVALUEが適用されます。

sequence-name

定義を変更する順序の名前です。

WAIT

NOWAIT

DEFAULT WAIT

MEXTVALへの参照を使用する場合の待機状態を指定します。順序についてNEXTVALを参照するには、順序のその他のユーザーとの同期化が必要です。DEFAULT WAITを指定すると、現在のトランザクションの待機状態(WAITまたはNOWAIT)が使用されます。つまり、NOWAITトランザクション中は待機しません。

WAIT(デフォルト)を順序に指定すると、現在のトランザクションの待機状態の設定に関係なく、すべての同期化が次の値まで待機します。これは、アプリケーションでNOWAITトランザクションを使用している場合の推奨設定です。トランザクションまたはデータベースに定義された現在のWAITタイムアウト時間が使用されます。

NOWAITを順序に指定すると、現在のトランザクションの設定に関係なく、すべての同期化は次の値まで待機しません。

WAIT値を変更した後でも、WAITの値を変更した時点でその順序を使用していたユーザーは継続して元の設定を使用します。


使用方法


例1: 順序の変更