ヘッダーをスキップ
Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス
11g リリース1(11.1)
E05686-02
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

93 DBMS_RANDOM

DBMS_RANDOMパッケージは、組込み式の乱数ジェネレータを提供します。 DBMS_RANDOMは暗号化に使用するものではありません。

この章では、次の項目について説明します。


DBMS_RANDOMの使用方法


セキュリティ・モデル

このパッケージは、SYSとしてインストールする必要があります。デフォルトでは、このパッケージは、現行のユーザー名、秒数まで示した現在の時間および現行セッションで初期化されます。


使用上の注意

DBMS_RANDOMは明示的に初期化できますが、乱数ジェネレータをコールする前に初期化する必要はありません。明示的な初期化が行われない場合は、日付、ユーザーIDおよびプロセスIDで自動的に初期化されます。

このパッケージを、同じシードを使用して2回シードしてから同じ方法でアクセスした場合、2回とも同じ結果が生成されます。

テストなどのように、すべての実行で乱数のシーケンスが同じになる必要のある場合があります。 その場合は、DBMS_RANDOM.SEEDのオーバーロードの1つをコールして、ジェネレータを一定の値でシードします。各実行時の出力を変える場合は、単にシードのコールを省略します。すると、システムによって適切なシードが選択されます。


DBMS_RANDOMサブプログラムの要約

表93-1 DBMS_RANDOMパッケージのサブプログラム

サブプログラム 説明

INITIALIZEプロシージャ


シード値を使用して、パッケージを初期化します。

NORMALファンクション


正規分布の乱数を戻します。

RANDOMプロシージャ


乱数を生成します。

SEEDプロシージャ


シードをリセットします。

STRINGファンクション


ランダム文字列を取得します。

TERMINATEプロシージャ


パッケージを終了します。

VALUEファンクション


このファンクションは、0以上1未満で小数点以下38桁(精度38桁)の乱数を取得します。このファンクションがオーバーロードされると、ランダムなOracleの数値xを取得します。このxはlow以上high未満です。



注意:

INITIALIZEプロシージャRANDOMプロシージャおよびTERMINATEプロシージャはすべて使用されなくなります。現在はサポートされていますが、このリリースに含まれているのは下位互換性を保つという理由にすぎません。


INITIALIZEプロシージャ

このプロシージャはジェネレータを初期化します(「使用上の注意」を参照)。

構文

DBMS_RANDOM.INITIALIZE (
   val  IN  BINARY_INTEGER);

プラグマ

PRAGMA restrict_references (initialize, WNDS)

パラメータ

表93-2 INITIALIZEプロシージャのパラメータ

パラメータ 説明

val

乱数の生成に使用するシード番号。


使用上の注意

このプロシージャはSEEDプロシージャのコールのみを行うもので、今後サポートされません。


NORMALファンクション

このファンクションは、標準正規分布の乱数を戻します。

構文

DBMS_RANDOM.NORMAL
  RETURN NUMBER;

プラグマ

PRAGMA restrict_references (normal, WNDS)

戻り値

表93-3 NORMALプロシージャのパラメータ

パラメータ 説明

number

乱数を戻します。



RANDOMプロシージャ

このプロシージャは乱数を生成します(「使用上の注意」を参照)。

構文

DBMS_RANDOM.RANDOM
   RETURN binary_integer;

プラグマ

PRAGMA restrict_references (random, WNDS)

戻り値

表93-4 RANDOMプロシージャのパラメータ

パラメータ 説明

binary_integer

-2の31乗以上2の31乗未満の整数の乱数を戻します。


使用上の注意

このプロシージャは現在はサポートされていますが、今後サポートされなくなるため、使用しないことをお薦めします。


SEEDプロシージャ

このプロシージャは、シードをリセットします。

構文

DBMS_RANDOM.SEED (
   seed  IN  BINARY_INTEGER);

DBMS_RANDOM.SEED (
   seed  IN  VARCHAR2);

プラグマ

PRAGMA restrict_references (seed, WNDS);

パラメータ

表93-5 SEEDプロシージャのパラメータ

パラメータ 説明

seed

乱数の生成に使用するシード番号または文字列。


使用上の注意

シードには2000までの長さの文字列を使用できます。


STRINGファンクション

このファンクションは、ランダム文字列を取得します。

構文

DBMS_RANDOM.STRING
   opt  IN  CHAR,
   len  IN  NUMBER)
  RETURN VARCHAR2;

プラグマ

PRAGMA restrict_references (string, WNDS)

パラメータ

表93-6 STRINGプロシージャのパラメータ

パラメータ 説明

opt

戻される文字列の表示方法を指定します。

  • 'u'、'U' - 大文字のアルファベット文字で文字列を戻します。

  • 'l'、'L' - 小文字のアルファベット文字で文字列を戻します。

  • 'a'、'A' - 大/小文字が混在したアルファベット文字で文字列を戻します。

  • 'x'、'X' - 大文字のアルファベット文字と数字で文字列を戻します。

  • 'p'、'P' - 印刷可能な任意の文字で文字列を戻します。

これ以外の場合、戻される文字列は大文字のアルファベット文字になります。

len

戻される文字列の長さ。


戻り値

表93-7 STRINGファンクションの戻り値

パラメータ 説明

VARCHAR2

VARCHAR2を戻します。



TERMINATEプロシージャ

パッケージを終了するときは、TERMINATEプロシージャをコールします(「使用上の注意」を参照)。

構文

DBMS_RANDOM.TERMINATE

使用上の注意

このプロシージャではファンクションは実行されません。このプロシージャは現在はサポートされますが、今後サポートされなくなるため、使用しないことをお薦めします。


VALUEファンクション

基本のファンクションでは、0以上1未満、小数点以下38桁(精度38桁)の乱数を取得します。あるいは、ランダムなOracleの数値xを取得できます。このxはlow以上high未満です。

構文

DBMS_RANDOM.VALUE
  RETURN NUMBER;

DBMS_RANDOM.VALUE(
  low  IN  NUMBER,
  high IN  NUMBER)
RETURN NUMBER;

パラメータ

表93-8 VALUEプロシージャのパラメータ

パラメータ 説明

low

乱数を生成する範囲の最小値(この値を含む)。生成される数値はlowと等しい場合があります。

high

乱数を生成する範囲の最大値(この値を含まない)。生成される数値はhighよりも小さくなります。


戻り値

表93-9 VALUEファンクションの戻り値

パラメータ 説明

NUMBER

Oracleの数値を戻します。