3. Modul DBIN - ODBC-Datenbank lesen

3.1. Allgemeines

Mit dem Skriptmodul können Objekte aus einer ODBC-Datenbank (z.B. MS-Access, Oracle) gelesen werden.

Der Modul wird mit:

|INCL \script\dbin.mod

in einer ICS RUN1-Konfiguration verfügbar gemacht.

3.2. Abhängigkeiten von anderen Modulen

Der Modul importiert die Klasse DB. Es stehen daher auch alle Methoden der Klasse DB zur Verfügung (s.a. iG/Script Benutzer- und Referenzhandbuch).

3.3. Parametermap DB_PARAM

Folgende Parameter können in der Map DB_PARAM gesetzt werden:

Parameterreq/optBeschreibung
SOURCEoODBC-Source der Datenbank. Muss gesetzt werden, falls die ODBC-Source nicht interaktiv abgefragt wird.
USERoDatenbank User für die Verbindung mit der ODBC-Source. Muss gesetzt werden, falls die ODBC-Source nicht interaktiv abgefragt wird.
PASSWORDoDatenbank Password für die Verbindung mit der ODBC-Source. Muss gesetzt werden, falls die ODBC-Source nicht interaktiv abgefragt wird.
TRACEoON oder OFF, Default = OFF. Für jedes gelesene Objekt eine Zeile ausgeben.

3.4. Parametermap DBIN_PARAM

Folgende Parameter können in der Map DBIN_PARAM für den Modul gesetzt werden:

Parameterreq/optBeschreibung
STATISTICSoON oder OFF, Default = OFF. Statistik anzeigen.
SELECT_PARSEoON oder OFF, Default = ON. Definiert, ob ein eventuelles SQL-select Statement geparst werden soll. Als Argument für für das Modul kann ein SQL-select Statement definiert werden. Als Default wird dieses select-Statement von geparst , um spezielle Attribute zu erkennen, die vom ODBC-Treiber nicht unterstützt werden und speziell gelesen werden müssen. Manchmal können select-Statements (komplexe Joins) nicht erfolgreich geparst werden. In solchen Fällen ist dieser Parameter auf OFF zu schalten. Sie müssen besorgt sein, dass das select-Statement von ODBC verarbeitet werden kann.

3.5. Objektmodell

Der Modul liefert pro IN-Objekt folgende Systemkomponenten:

Komponentereq/optBeschreibung
IN.TABLE(s)rTablename des IN Objekts.

Alle weiteren Komponenten sind abhängig von der Tabellen-Definition in der Datenbank.

3.6. Datenbankmodell

Die Methode DB.GET_INFO liefert das Datenmodell der Datenbank in einer Objektstruktur. Auf die einzelnen Komponenten dieser Objektstruktur kann zugegriffen werden.

Anwendung der Methode DB.GET_INFO:

MAP DB_MODEL
END_MAP

&DB_MODEL DB.GET_INFO

Objektstruktur Datenmodell:

DB_MODEL (m)
   DB_NAME     -> (s) <Name>
   DB_USER     -> (s) <DB-User>
   DB_PASSWORD -> (s) <DB-Password>
   PRODUKT     -> (s) <Produkt>
   VERSION     -> (s) <Version>
   TABLES      -> (m)
      : 
      <Tablename> -> (m)
         TABLENAME      -> (s) <Tablename>
         TABLEQUALIFIER -> (s) <Tabelqualifier>
         TABLEOWNER     -> (s) <Tableowner>
         TABLETYPE      -> (s) <Tabletype>
         COLUMNS        -> (m)
            : 
            <Columnname> -> (m)
               NAME       -> (s) <Name>
               TYPENAME   -> (s) <Typename>
               DATATYPE   -> (i) <Datatype>
               LENGTH     -> (i) <Length>
               PRECISION  -> (i) <Precision>
               SCALE      -> (i) <Scale>
               RADIX      -> (i) <Radix>
               NULLABLE   -> (b) <Nullable>
               REMARKS    -> (s) <Remarks>

Zugriffsbeispiele Objektstruktur Datenmodell:

! Display User,Product,Version
DISPLAY DB_MODEL

! Display Tables
DISPLAY DB_MODEL.TABLES

! Display Table Category
DISPLAY DB_MODEL.TABLES.CATEGORY

! Display Columns of Table Category
DISPLAY DB_MODEL.TABLES.CATEGORY.COLUMNS

! Display Column MSLINK of Table Category
DISPLAY DB_MODEL.TABLES.CATEGORY.COLUMNS.MSLINK

! Display Typename of Column MSLINK of Table Category
DISPLAY DB_MODEL.TABLES.CATEGORY.COLUMNS.MSLINK.TYPENAME

3.7. Exportierte Prozeduren und Methoden

ProzedurDBIN_OPEN [s input][]
Beschreibung

Öffnet eine Datenbank definiert in DB_PARAM.SOURCE und liest Objekte von der Datenbank in Abhängigkeit von <input>. Für <input> können folgende Werte verwendet werden.

*

Liest alle Tabellen der Datenbank.

<tablename>

Liest die Records der Tabelle <tablename>.

<tablename>,<sql-select-statement>

Liest die Records der Tabelle <tablename> entsprechend dem SQL-select-Statement. Beinhaltet das SQL-select-Statement Hochkommas für Strings so sind die Hochkommas ' durch Anführungszeichen " zu ersetzen.

Die Prozedur wird von RUN1 automatisch aufgerufen.

Beispiel
'CATEGORY,select * from CATEGORY where CNAME like "av%"' DBIN_OPEN
 
MAP INPUT_SOURCES
   I1 => DBIN,CATEGORY,'select * from CATEGORY where CNAME like "av%"'
END_MAP
ProzedurDBIN_READ_OBJECT [][b state]
Beschreibung

Liest das nächste IN-Objekt aus der geöffneten Datenbank-Tabelle. Die Prozedur wird von RUN1 automatisch aufgerufen.

Beispiel
DBIN_READ_OBJECT [TRUE]
ProzedurDBIN_CLOSE [][]
BeschreibungSchliesst den Modul und gibt die durch den Modul belegten Resourcen wieder frei. Die Prozedur wird von RUN1 automatisch aufgerufen.
Beispiel
DBIN_CLOSE

3.8. Skriptbeispiel

! Diese ICS Konfiguration zeigt alle von DBIN
! gelesenen Objekte in der .log Datei an.

|LICENSE \license\iltools.lic

MAP USER_INPUT1
   DIALOG        => ODBC
   OPT           => input
END_MAP

MAP DB_PARAM
END_MAP

MAP DBIN_PARAM
   STATISTICS     => ON
END_MAP

MAP INPUT_SOURCES
   I1 => DBIN,*
END_MAP

MAP INOUT
   I1 => DISPLAY_OBJECT1,IN
END_MAP

|INCL \script\dbin.mod
|INCL \script\run1.prg