Anwendungsentwicklung: CLI (Call Level Interface)

| | |

Diagnosetabellenaktualisierung für die Funktion SQLDescribeParam (CLI)

|

Die Funktion SQLDescribeParam() gibt die Beschreibung einer Parametermarke zurück, die einer vorbereiteten SQL-Anweisung zugeordnet ist.

|

Bei SQLSTATE HYC00 wurde die Diagnosetabelle aktualisiert.

|
|Diagnose |

| |||||||||||||||||
Tabelle 24. SQLSTATE-Werte für SQLDescribeParam
SQLSTATE-Wert Beschreibung Erläuterung
HYC00 Treiber ist nicht funktionsfähig. Die gespeicherten Prozeduren der Schemafunktion sind auf dem Server nicht zugänglich. |Installieren Sie die gespeicherten Prozeduren der Schemafunktion auf dem Server, und stellen Sie sicher, dass sie zugänglich sind.
| | |

Asynchrone Ausführung der CLI (Call Level Interface)

|

Die DB2 CLI (DB2 Call Level Interface) kann eine Untermenge von Funktionen asynchron ausführen. |Der DB2 CLI-Treiber gibt die Steuerung nach dem Aufruf der Funktion, jedoch vor der Beendung ihrer Ausführung, an die Anwendung zurück. Die Funktion gibt bei jedem Aufruf SQL_STILL_EXECUTING zurück, bis ihre Ausführung beendet ist. Danach gibt sie einen anderen Wert zurück (z. B. SQL_SUCCESS).

|

Die asynchrone Ausführung ist nur unter Single-Thread-Betriebssystemen von Vorteil. Anwendungen, die unter Multithread-Betriebssystemen ausgeführt werden, sollten Funktionen in separaten Threads ausführen. Die asynchrone Ausführung ist für diejenigen Funktionen möglich, die normalerweise eine Anforderung an den Server senden und anschließend auf eine Antwort warten. Statt zu warten, gibt eine asynchron ausgeführte Funktion die Steuerung an die Anwendung zurück. Die Anwendung kann anschließend andere Tasks ausführen, oder sie kann die Steuerung an das Betriebssystem zurückgeben und die Funktion mit Hilfe eines Interrupts wiederholt abfragen, bis ein anderer Rückkehrcode als SQL_STILL_EXECUTING zurückgegeben wird.

|

Die Unterstützung für eine asynchrone Ausführung der CLI ist ab Version 8.2 FixPak 1 (äquivalent zu Version 8.1 FixPak 8) in DB2 Universal Database (UDB) enthalten. Die Dokumentation zu dieser Funktion finden Sie unter der URL-Adresse http://publib.boulder.ibm.com/infocenter/db2v7luw/index.jsp in Information - Unterstützung für DB2 UDB Version 7. Alle Informationen in der Dokumentation zu Version 7 gelten für Versionen ab Version |8.2 FixPak 1 (äquivalent zu Version 8.1 FixPak 8). Information - Unterstützung für DB2 Version |8 enthält keine Dokumentation zu dieser Funktion.

| | |

Verbindungsattribut SQL_ATTR_PING_DB

|
|SQL_ATTR_PING_DB (DB2 CLI Version 8.2) |

SQL_ATTR_PING_DB ist eine 32-Bit-Ganzzahl, die mit der Funktion SQLGetConnectAttr() verwendet wird, um die Antwortzeit des Netzwerks bei einer vorhandenen Verbindung zwischen dem DB2 UDB-Client und dem DB2 UDB-Server abzurufen. Die Antwortzeit wird in Mikrosekunden zurückgemeldet.

|

Wenn die Datenbank vorher eine Verbindung hergestellt und diese freigegeben hat, wird der Wert 0 zurückgemeldet. Wenn die Verbindung von der Anwendung geschlossen wurde, wird der SQLSTATE-Wert 08003 zurückgemeldet. Dieses Verbindungsattribut kann von SQLGetConnectAttr() zurückgegeben werden, Es kann jedoch nicht mit Hilfe von SQLSetConnectAttr() gesetzt werden. |Wenn Sie versuchen, dieses Attribut festzulegen, wird der SQLSTATE-Wert HYC00 (Treiber ist nicht funktionsfähig) zurückgegeben.

| | |

Funktion SQLBindParameter (CLI)

|

In der Dokumentation zur Funktion SQLBindParameter ist die Beschreibung im Abschnitt zum Eingabeparameter falsch. Die richtige Beschreibung muss wie folgt lauten:

|
|
Eingabeparameter
|
Der Wert 0 für ColumnSize bedeutet, dass DB2 CLI die maximale Länge für den SQL-Typ verwendet, der als Größe für den Spaltenparameter oder für den Parameter für gespeicherte Prozedur angegeben wird. DB2 CLI führt alle erforderlichen Konvertierungen unter Verwendung dieser Größe aus. |
|
| | |

Funktion SQLMoreResults (CLI)

|

In der Dokumentation zur Funktion SQLMoreResults ist das Anweisungsattribut SQL_ATTR_ROW_ARRAY_SIZE falsch angegeben. Das richtige Anweisungsattribut muss SQL_ATTR_PARAMSET_SIZE lauten. Der Abschnitt zur Verwendung muss wie folgt lauten:

|

Diese Funktion gibt mehrere Ergebnismengen sequenziell zurück, wenn Folgendes ausgeführt wird:

|

Zusätzliche Umgebungsattribute

Die folgenden Attribute sind CLI-Verbindungsattribute und werden außerdem als CLI-Umgebungsattribute unterstützt:

Informationen zu diesen Attributen finden Sie in der Dokumentation zu den CLI-Verbindungsattributen in DB2 Information - Unterstützung oder in CLI Guide and Reference Volume 2.

Voraussetzung für dynamische verschiebbare Cursor

Zum Aktualisieren und Löschen von Zeilen in der Ergebnismenge eines dynamischen verschiebbaren Cursors muss die Anweisung UPDATE oder DELETE alle Spalten von mindestens einem eindeutigen Schlüssel in der Basistabelle einschließen. Dies kann der Primärschlüssel oder ein beliebiger anderer eindeutiger Schlüssel sein.

| | |

CLI/ODBC-Konfigurationsschlüsselwort RetCatalogAsCurrServer

|
|
Beschreibung des Schlüsselworts
|
Katalogfunktionen geben für die Katalogspalten nicht den Nullwert sondern den Wert für CURRENT SERVER zurück. |
|
Syntax für das Schlüsselwort der db2cli.ini:
|
RetCatalogAsCurrServer= 0 | 1 |
|
Standardeinstellung:
|
Wenn das Ziel-DBMS für die Katalogspalten einen Nullwert zurückgibt, wird der Wert für CURRENT |SERVER nicht ersetzt. |
|
Verwendungshinweise:
|
Wenn die Katalogfunktionen für das Ziel-DBMS einen Nullwert für die Katalogspalten zurückgeben, und wenn Sie den Wert für RetCatalogAsCurrServer auf 1 setzen, gibt das DBMS stattdessen den Wert für CURRENT SERVER zurück. | |

Beispiel: Die Katalogfunktion SQLTables() gibt eine Ergebnismenge zurück, in der die Werte für die Spalte TABLE_CAT Nullwerte sind. Wenn der Wert für |RetCatalogAsCurrServer auf 1 gesetzt wird, gibt das DBMS den Wert für CURRENT SERVER in der Spalte TABLE_CAT zurück.

|

| |
Anmerkung:
|
Dieses Schlüsselwort wird von DB2 |UDB für Linux, UNIX(R) und Windows(R) ab Version 8.2 FixPak 3 (äquivalent zu Version 8.1 FixPak 10) unterstützt.
|
|

CLI/ODBC-Konfigurationsschlüsselwort ReceiveTimeout

Beschreibung des Schlüsselworts
Geben Sie die Zeit in Sekunden an, die auf eine Antwort vom Server über eine hergestellte Verbindung gewartet werden soll, bevor der Versuch beendet wird und ein Fehler auf Grund der Zeitlimitüberschreitung bei der Datenübertragung generiert wird.
Syntax für das Schlüsselwort der db2cli.ini:
ReceiveTimeout = 0 | 1 | 2 | ... | 32767
Standardeinstellung:
Der Client wartet unbestimmte Zeit auf eine Antwort vom Server über eine hergestellte Verbindung.
Funktional entsprechendes Anweisungsattribut:
SQL_ATTR_RECEIVE_TIMEOUT
Verwendungshinweise:
Der Standardwert 0 gibt an, dass der Client unbestimmte Zeit auf eine Antwort wartet. Die Zeitlimitüberschreitung bei Empfang hat während des Verbindungsaufbaus keine Auswirkungen. Sie wird nur für TCP/IP unterstützt und wird für jedes andere Protokoll ignoriert.

Anweisungsattribut SQL_ATTR_RECEIVE_TIMEOUT

SQL_ATTR_RECEIVE_TIMEOUT (DB2 CLI Version 8)
Ein ganzzahliger 32-Bit-Wert, der die Anzahl Sekunden angibt, die ein Client auf eine Antwort vom Server über eine hergestellte Verbindung wartet, bevor der Versuch beendet wird und ein Fehler auf Grund der Zeitlimitüberschreitung bei der Datenübertragung generiert wird. Der Standardwert 0 gibt an, dass der Client unbestimmte Zeit auf eine Antwort wartet. Die Zeitlimitüberschreitung bei Empfang hat während des Verbindungsaufbaus keine Auswirkungen. Sie wird nur für TCP/IP unterstützt und wird für jedes andere Protokoll ignoriert. Als unterstützte Werte gelten ganze Zahlen von 0 bis 32767.

CLI/ODBC-Konfigurationsschlüsselwort Reopt

Beschreibung des Schlüsselworts
Ermöglicht die Abfrageoptimierung oder -reoptimierung für SQL-Anweisungen, die spezielle Register oder Parametermarken haben.
Syntax für das Schlüsselwort der db2cli.ini:
Reopt = 2 | 3 | 4
Standardeinstellung:
Während der Ausführungszeit einer Abfrage wird keine Abfrageoptimierung durchgeführt. Die vom Compiler ausgewählten Standardschätzwerte werden für spezielle Register oder Parametermarken verwendet.
Funktional entsprechendes Anweisungsattribut:
SQL_ATTR_REOPT
Verwendungshinweise:
Die Optimierung wird durchgeführt, wenn an Stelle der vom Compiler ausgewählten Standardschätzwerte die Werte verwendet werden, die während der Ausführungszeit der Abfrage für die speziellen Register und Parametermarken verfügbar sind. Die gültigen Werte des Schlüsselwerts lauten wie folgt: "NULLIDR1" und "NULLIDRA" sind reservierte Paketsatznamen, bei deren Verwendung REOPT ONCE und REOPT ALWAYS entsprechend impliziert sind. Diese Paketsätze müssen mit den folgenden Befehlen explizit erstellt werden:
db2 bind db2clipk.bnd collection NULLIDR1
db2 bind db2clipk.bnd collection NULLIDRA
Wenn sowohl das Schlüsselwort Reopt als auch das Schlüsselwort CurrentPackageSet angegeben sind, hat CurrentPackageSet Vorrang.

Anweisungsattribut SQL_ATTR_REOPT

SQL_ATTR_REOPT (DB2 CLI Version 8)
Ein ganzzahliger 32-Bit-Wert, der die Abfrageoptimierung für SQL-Anweisungen ermöglicht, die spezielle Register oder Parametermarken enthalten. Die Optimierung wird durchgeführt, wenn an Stelle der vom Compiler ausgewählten Standardschätzwerte die Werte verwendet werden, die während der Ausführungszeit einer Abfrage für spezielle Register und Para- metermarken verfügbar sind. Die gültigen Werte des Attributs lauten wie folgt: "NULLIDR1" und "NULLIDRA" sind reservierte Paketsatznamen, bei deren Verwendung REOPT ONCE und REOPT ALWAYS entsprechend impliziert sind. Diese Paketsätze müssen mit den folgenden Befehlen explizit erstellt werden:
db2 bind db2clipk.bnd collection NULLIDR1
db2 bind db2clipk.bnd collection NULLIDRA
SQL_ATTR_REOPT und SQL_ATTR_CURRENT_PACKAGE_SET schließen sich gegenseitig aus. Wenn also eines dieser Attribute gesetzt ist, ist das andere Attribut nicht zulässig.

CLI/ODBC-Konfigurationsschlüsselwort CurrentPackageSet

Beschreibung des Schlüsselworts
Setzt die Anweisung SET CURRENT PACKAGESET nach jedem Verbindungsaufbau ab.
Syntax für das Schlüsselwort der db2cli.ini:
CurrentPackageSet = schemaname
Standardeinstellung:
Die Klausel ist nicht angehängt.
Funktional entsprechendes Verbindungsattribut:
SQL_ATTR_CURRENT_PACKAGE_SET
Verwendungshinweise:

Diese Option setzt die SQL-Anweisung SET CURRENT PACKAGESET mit dem Wert CurrentPackageSet ab, sobald eine Verbindung zu einer Datenbank hergestellt wurde. Die Klausel ist standardmäßig nicht angehängt.

Die SQL-Anweisung SET CURRENT PACKAGESET legt den Schemanamen (Objektgruppen-ID) fest, mit dem das Paket für nachfolgende SQL-Anweisungen ausgewählt wird.

CLI/ODBC-Anwendungen setzen dynamische SQL-Anweisungen ab. Mit dieser Option können Sie die Zugriffsrechte steuern, mit denen diese Anweisungen ausgeführt werden:

Die SQL-Anweisungen in den CLI/ODBC-Anwendungen werden jetzt unter dem angegebenen Schema ausgeführt und verwenden die dort definierten Zugriffsrechte.

Die folgenden Paketsatznamen sind reserviert: "NULLID", "NULLIDR1", "NULLIDRA".

Wenn sowohl das Schlüsselwort Reopt als auch das Schlüsselwort CurrentPackageSet angegeben sind, hat CurrentPackageSet Vorrang.

Verbindungsattribut SQL_ATTR_CURRENT_PACKAGE_SET

SQL_ATTR_CURRENT_PACKAGE_SET (DB2 CLI Version 5)
Eine auf Null endende Zeichenfolge, die den Schemanamen (Objektgruppen-ID) angibt, mit dem das Paket für nachfolgende SQL-Anweisungen ausgewählt wird. Durch das Setzen dieses Attributs wird die SQL-Anweisung SET CURRENT PACKAGESET abgesetzt. Wenn dieses Attribut gesetzt wird, bevor eine Verbindung hergestellt wurde, wird die SQL-Anweisung SET CURRENT PACKAGESET abgesetzt, sobald eine Verbindung hergestellt wird.

CLI/ODBC-Anwendungen setzen dynamische SQL-Anweisungen ab. Mit diesem Verbindungsattribut können Sie die Zugriffsrechte steuern, mit denen diese Anweisungen ausgeführt werden:

Die SQL-Anweisungen in den CLI/ODBC-Anwendungen werden jetzt unter dem angegebenen Schema ausgeführt und verwenden die dort definierten Zugriffsrechte.

Das Setzen des CLI/ODBC-Konfigurationsschlüsselworts CURRENTPACKAGESET ist eine alternative Methode zur Angabe des Schemanamens.

Die folgenden Paketsatznamen sind reserviert: "NULLID", "NULLIDR1", "NULLIDRA".

SQL_ATTR_REOPT und SQL_ATTR_CURRENT_PACKAGE_SET schließen sich gegenseitig aus. Wenn also eines dieser Attribute gesetzt ist, ist das andere Attribut nicht zulässig.

Schlüsselwort MapBigintCDefault für die CLI/ODBC-Konfiguration

Beschreibung des Schlüsselworts
Geben Sie den Standard-C-Typ der BIGINT-Spalten und der BIGINT-Parametermarken an.
Syntax für das Schlüsselwort der db2cli.ini:
MapBigintCDefault = 0 | 1 | 2
Standardeinstellung:
Die Standard-C-Typ-Darstellung für BIGINT-Daten ist SQL_C_BIGINT.
Verwendungshinweise:
 

MapBigintCDefault steuert den C-Typ, der verwendet wird, wenn SQL_C_DEFAULT für BIGINT-Spalten und für BIGINT-Parametermarken angegeben wird. Dieses Schlüsselwort sollte vor allem für Microsoft-Anwendungen eingesetzt werden, z. B. für die Anwendung Microsoft Access, die keine 8-Byte-Ganzzahlen verarbeiten kann. Setzen Sie MapBigintCDefault wie folgt:

Dieses Kennwort wirkt sich auf das Verhalten von CLI-Funktionen aus, bei denen SQL_C_DEFAULT als C-Typ angegeben werden kann, z. B. SQLBindParameter(), SQLBindCol() und SQLGetData().

Schlüsselwort DescribeOutputLevel für die CLI/ODBC-Konfiguration

Beschreibung des Schlüsselworts
Legt die Stufe der DESCRIBE-Daten der Ausgabespalte fest, die vom CLI-Treiber bei PREPARE- oder DESCRIBE-Anforderungen angefordert werden.
Syntax für das Schlüsselwort der db2cli.ini:
DescribeOutputLevel = 0 | 1 | 2 | 3
Standardeinstellung:
Anforderung der DESCRIBE-Daten, die in Stufe 2 der Tabelle 25 aufgelistet sind.
Verwendungshinweise:
 

Dieses Schlüsselwort steuert die Datenmenge, die der CLI-Treiber bei einer PREPARE- oder DESCRIBE-Anforderung anfordert. Standardmäßig gibt der Server bei Empfang einer DESCRIBE-Anforderung die Informationen zurück, die in Stufe 2 der Tabelle 25 für die Ergebnismengenspalten aufgelistet sind. Möglicherweise benötigt eine Anwendung jedoch nicht alle Informationen, oder sie benötigt zusätzliche Informationen.

Wenn das Schlüsselwort DescribeOutputLevel auf eine Stufe gesetzt wird, die dem Bedarf der Clientanwendung entspricht, wird möglicherweise die Leistung gesteigert, da die zwischen dem Client und dem Server übertragenen DESCRIBE-Daten auf die Mindestmenge begrenzt sind, die für die Anwendung erforderlich ist. Wenn DescribeOutputLevel auf einen zu niedrigen Wert gesetzt wird, kann sich dies auf die Funktionalität der Anwendung auswirken (in Abhängigkeit von den Anforderungen der Anwendung). Die CLI-Funktionen zum Abrufen der DESCRIBE-Informationen schlagen in diesem Fall möglicherweise nicht fehl, die zurückgegebenen Daten sind jedoch möglicherweise unvollständig.

Folgende Einstellungen für DescribeOutputLevel werden unterstützt:

In der folgenden Tabelle sind die Felder aufgeführt, aus denen die DESCRIBE-Informationen bestehen, die der Server bei Empfang einer PREPARE- oder DESCRIBE-Anforderung zurückgibt. Diese Felder werden in Stufen gruppiert, und das Schlüsselwort DescribeOutputLevel für die CLI/ODBC-Konfiguration steuert, welche Stufen von DESCRIBE-Informationen der CLI-Treiber anfordert.

Anmerkung:
Nicht alle Stufen von DESCRIBE-Informationen werden von allen DB2-Servern unterstützt. Auf den folgenden DB2-Servern werden alle Stufen von DESCRIBE-Informationen unterstützt: DB2 Universal Database (UDB) für Linux, UNIX und Windows ab Version 8, DB2 UDB für z/OS ab Version 8 und DB2 UDB für iSeries ab Version 5 Release 3. Alle übrigen DB2-Server unterstützten für DescribeOutputLevel nur die Einstellung 2 oder 0.
Tabelle 25. Stufen der DESCRIBE-Informationen
Stufe 1 Stufe 2 Stufe 3
SQL_DESC_COUNT
SQL_COLUMN_COUNT
SQL_DESC_TYPE
SQL_DESC_CONCISE_TYPE
SQL_COLUMN_LENGTH
SQL_DESC_OCTET_LENGTH
SQL_DESC_LENGTH
SQL_DESC_PRECISION
SQL_COLUMN_PRECISION
SQL_DESC_SCALE
SQL_COLUMN_SCALE
SQL_DESC_DISPLAY_SIZE
SQL_DESC_NULLABLE
SQL_COLUMN_NULLABLE
SQL_DESC_UNSIGNED
SQL_DESC_SEARCHABLE
SQL_DESC_LITERAL_SUFFIX
SQL_DESC_LITERAL_PREFIX
SQL_DESC_CASE_SENSITIVE
SQL_DESC_FIXED_PREC_SCALE
Alle Felder der Stufe 1
und:
SQL_DESC_NAME
SQL_DESC_LABEL
SQL_COLUMN_NAME
SQL_DESC_UNNAMED
SQL_DESC_TYPE_NAME
SQL_DESC_DISTINCT_TYPE
SQL_DESC_REFERENCE_TYPE
SQL_DESC_STRUCTURED_TYPE
SQL_DESC_USER_TYPE
SQL_DESC_LOCAL_TYPE_NAME
SQL_DESC_USER_DEFINED_
         TYPE_CODE
Alle Felder der Stufen 1
und 2 und:
SQL_DESC_BASE_COLUMN_NAME
SQL_DESC_UPDATABLE
SQL_DESC_AUTO_UNIQUE_VALUE
SQL_DESC_SCHEMA_NAME
SQL_DESC_CATALOG_NAME
SQL_DESC_TABLE_NAME
SQL_DESC_BASE_TABLE_NAME
[ Seitenanfang |Vorherige Seite | Nächste Seite | Inhaltsverzeichnis ]