Benutzer-Werkzeuge

Webseiten-Werkzeuge


prog:oracle_dbms_random_12c

Oracle PL/SQL - Zufall in der Datenbank - DBMS_RANDOM für die Generierung von Testdaten einsetzen

min. ab Oracle 7 ? - letzter Test mit Oracle 12c

Mit dem PL/SQL Package „DBMS_RANDOM“ lassen sich Zufallszahlen und -strings in der Datenbank erzeugen.

Das ist sehr hilfreich beim Erzeugen von Testdaten.

Seit 11g/12c ist es nicht mehr notwendig eine Seed vor dem Aufruf von DBMS_RANDOM zu setzen.


Anwendung

Numerische Zahl VON - BIS erzeugen

Mit „dbms_random.value ( low, high)“ Zahlen vom Typ NUMBER aus einer Menge von / bis erzeugen.

Mit „ceil“ lässt sich dann wieder ein Integer Wert daraus ermitteln.

Beispiel: Entweder eine 1 oder eine 2 erzeugen:

SELECT  CEIL(dbms_random.value (0, 2)) FROM dual;

Wie ist die Verteilung der beiden Werte:

SELECT   avg(val)
       , SUM(decode(val,1,1,0)) val_eq_1
       , SUM(decode(val,2,1,0)) val_eq_2
       , COUNT(*) FROM  ( SELECT  CEIL(dbms_random.value (0, 2))  AS val
                            FROM dba_objects)
/                           
 
    AVG(VAL)     VAL_EQ_1     VAL_EQ_2     COUNT(*)
------------ ------------ ------------ ------------
1.5015453097        47255        47548        94803
 
    AVG(VAL)     VAL_EQ_1     VAL_EQ_2     COUNT(*)
------------ ------------ ------------ ------------
1.4997415694        47426        47377        94803

Das sieht dann so gar so einigermaßen gleichmäßig verteilt aus

Mit diesen Zahlen lässt sich dann rechnen und zum Beispiel ein zufälliges Datum erzeugen.


Strings erzeugen

Mit „DBMS_RANDOM.string ( opt, len)“ wird ein String mit der Länge „len“ zurück gegeben. Mit dem „opt“ Parameter wird die Zeichensatz Menge, aus denen gewählt werden soll, gesetzt:

Aus der 12c Doku:

  • 'u', 'U' - returning string in uppercase alpha characters
  • 'l', 'L' - returning string in lowercase alpha characters
  • 'a', 'A' - returning string in mixed case alpha characters
  • 'x', 'X' - returning string in uppercase alpha-numeric characters
  • 'p', 'P' - returning string in any printable characters.

Otherwise the returning string is in uppercase alpha characters.

demnächst mehr


Quellen

12c Database PL/SQL Packages and Types Reference

Diese Website verwendet Cookies. Durch die Nutzung der Website stimmen Sie dem Speichern von Cookies auf Ihrem Computer zu. Außerdem bestätigen Sie, dass Sie unsere Datenschutzbestimmungen gelesen und verstanden haben. Wenn Sie nicht einverstanden sind, verlassen Sie die Website.Weitere Information
prog/oracle_dbms_random_12c.txt · Zuletzt geändert: 2016/10/17 19:51 von gpipperr