www.Gerhard-Raabe.de
  Oracle
 
 
Back   Parameter
 
Copyright: Der nachfolgende Code ist frei verfügbar, solange er nicht kommerziell verwendet wird! Falls er so wie veröffentlicht, in Teilen oder abgewandelt zum Einsatz kommt, würde ich mich sehr über eine kurze E-Mail freuen.
 
Datenmodel: Parameter
 
Beschreibung: Zur Speicherung von Parameterdaten wurde eine Datenstruktur realisiert, die ähnlich aufgebaut ist wie ein INI-File. Die Datenstruktur enthält Parametergruppen, der wiederum verschiedene, einzelne Parameter zugeordnet werden. Ein Parameter hat ein in der Parametergruppe einen eindeutigen Label. Da Parameter unterschiedliche Datentypen in der gleichen Struktur gehalten werden sollen, werden alle Parameter als String (varchar) gespeichert.

Der Datenzugriff auf die Parametertabellen erfolgt über die Proceduren/Funktionen des Packages parameter, über die das Auslesen und Ändern der Parameter erfolgt.
 
Tabellen: tpar_parameter

Enthält die Parmeter, die in Gruppen (tpag_parameter_group) zusammengefaßt werden können. Die Parameter in par_value werden grundsätzlich als String angegeben. Ihr Datentyp läßt sich über die Tabelle tpat_parameter_type ermitteln.

 Spalte   Datentyp   Comment
 par_pag_id   INTEGER   Referenz-ID zu [tpag_parameter_group] (Parametergruppen) 
 par_label   VARCHAR2(32)   Name des Parameters 
 par_value   VARCHAR2((255)   Wert des Parameters 
 par_pat_id   INTEGER   Referenz-ID zu [tpat_parameter_type] (Datentyp) 
 par_description   VARCHAR2(255)   Beschreibung 


tpag_parameter_group

Enthält die Definition der Parametergruppen.

 Spalte   Datentyp   Comment
 pag_id   INTEGER   Identifier 
 pag_label   VARCHAR2((32)   Name der Parametergruppe 


tpat_parameter_type

Definiert den Datentyp des Parmeters (integer, string float, etc.).

 Spalte   Datentyp   Comment
 pat_id   INTEGER   Identifier 
 pat_label   VARCHAR2(16)   Name des Parameter-Datentyps 

Die folgenden Werte sind implementiert:

 1   :   string 
 2   :   integer 
 3   :   float 
 4   :   date 


hpar_parameter

Enthält die Änderungshistorie der Parmeter. Änderungen auf der Tabelle tpar_parameter werden hier mittels des Triggers trg_par_parameter protokolliert. Wegen der besseren Übersicht werden dabei nur die Spalten befüllt, deren Inhalt geändert wurde. Alle anderen werden mit NULL befüllt.

 Spalte   Datentyp   Comment
 par_pag_id   INTEGER   Referenz-ID zu [tpag_parameter_group] (Parametergruppen) 
 par_label   VARCHAR2(32)   Name des Parameters 
 par_value   VARCHAR2((255)   Wert des Parameters 
 par_pat_id   INTEGER   Referenz-ID zu [tpat_parameter_type] (Datentyp) 
 par_description   VARCHAR2(255)   Beschreibung 
 par_user   VARCHAR2(32)   User. der die Änderung durchgeführt hat 
 par_timestamp   TIMESTAMP   Zeitpunkt der Änderung 
 par_action   CHAR(1)   SQL der Änderung (I = Insert, U = Update, D = Delete) 
 
Proceduren/
Funktionen:
Die Proceduren / Funktionen befinden sich im Package parameter:


get_parameter

 
FUNCTION get_parameter
(
  parameter_group IN tpag_parameter_group.pag_label%TYPE,
  parameter IN tpar_parameter.par_label%TYPE
)
RETURN tpar_parameter.par_value%TYPE;

 

 
FUNCTION get_parameter
(
  parameter_group IN tpag_parameter_group.pag_label%TYPE,
  parameter IN tpar_parameter.par_label%TYPE,
  default_value IN tpar_parameter.par_value%TYPE
)
RETURN tpar_parameter.par_value%TYPE;

 

Gibt den zugehörigen Wert eines Parameters (parameter) aus einer spezifizierte Parametergruppe (parameter_group) zurück. Ist kein entsprechender Parameter auf der Tabelle definiert, dann wird, wenn kein Defaultwert (default_value) definiert wurde, NULL zurückgeben, andernfalls der Defaultwert.


get_parameter_type

 
FUNCTION get_parameter_type
(
  parameter_group IN tpag_parameter_group.pag_label%TYPE,
  parameter IN tpar_parameter.par_label%TYPE
)
RETURN tpat_parameter_type.pat_label%TYPE;

 

Gibt den zugehörigen Datentyp eines Parameters zurück. Ist kein entsprechender Parameter auf der Tabelle definiert, dann wird NULL zurückgeben.


set_parameter

 
FUNCTION set_parameter
(
  parameter_group IN tpag_parameter_group.pag_label%TYPE,
  parameter IN tpar_parameter.par_label%TYPE,
  parameter_value IN tpar_parameter.par_value%TYPE
)
RETURN INTEGER;

 

Ändert den zugehörigen Wert (parameter_value) eines Parameters (parameter) aus einer spezifizierte Parametergruppe (parameter_group).

Returnwerte:
1  =  OK
0  =  no parameter/parameter-group defined


create_parameter

 
FUNCTION create_parameter
(
  parameter_group IN tpag_parameter_group.pag_label%TYPE,
  parameter IN tpar_parameter.par_label%TYPE,
  parameter_value IN tpar_parameter.par_value%TYPE,
  parameter_type IN tpat_parameter_type.pat_label%TYPE,
  parameter_description IN tpar_parameter.par_description%TYPE DEFAULT ''
)
RETURN INTEGER;

 

Erzeugt in der spezifizierte Parametergruppe (parameter_group) einen neuen Parameter (parameter) mit einem vorgegebenen Wert (parameter_value) und Datentype (parameter_type). Wird keine Parameterbeschreibung (parameter_description) übergeben, dann wird automatisch der Parametername (parameter) als Beschreibung übernommen.

Returnwerte:
1  =  OK
0  =  no parameter/parameter-group defined
-1  =  error during create parameter
 
Beispiel:
 
DECLARE

  status INTEGER;
  para tpar_parameter.par_value%TYPE;
BEGIN

  status := parameter.create_parameter('Account', 'Login', 'Mustermann', 'string', 'Login des Accounts');
  DBMS_OUTPUT.PUT_LINE('Status create Account/Login: ' || status);
  status := parameter.create_parameter('Account', 'Password', 'Geheim', 'string', 'Password des Accounts');
  DBMS_OUTPUT.PUT_LINE('Status create Account/Password: ' || status);

  DBMS_OUTPUT.PUT_LINE(' ');

  para := parameter.get_parameter('Account', 'Login');
  DBMS_OUTPUT.PUT_LINE('Account/Login: ' || para);
  para := parameter.get_parameter('Account', 'Password');
  DBMS_OUTPUT.PUT_LINE('Account/Password: ' || para);

  DBMS_OUTPUT.PUT_LINE(' ');

  status := parameter.set_parameter('Account', 'Password', 'StrengGeheim');
  DBMS_OUTPUT.PUT_LINE('Status set Account/Password: ' || status);

  DBMS_OUTPUT.PUT_LINE(' ');

  para := parameter.get_parameter('Account', 'Password');
  DBMS_OUTPUT.PUT_LINE('Account/Password: ' || para);
END;

 

Output:

 
Status create Account/Login: 0
Status create Account/Password: 0

Account/Login: Mustermann
Account/Password: StrengGeheim

Status set Account/Password: 1

Account/Password: StrengGeheim

Command was executed successfully

 
 
Download:
Next   Parameter.sql   (Vollständiges SQL-Script zur Erzeugung des Packages)
Next   Parameter.pdm   (Physikalisches Datenmodel für PowerDesigner 9.0)
372888 Besucher - seit dem 01.02.2005 - 1 Besucher online © 2004-2015 by Gerhard Raabe ##, ## ### #### - ##:##:##