Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SAP Sybase SQL Anywhere 16.0 (Deutsch) » SQL Anywhere Server - Programmierung » Embedded SQL » SQL-Kommunikationsbereich (SQLCA)

 

Mehrere SQLCAs

Sie dürfen die Option (-r-) des SQL-Präprozessors nicht verwenden, die einen Code ohne Wiedereinstieg (Non-Reentrant) erstellt. Der Reentrant-Code ist etwas umfangreicher und etwas langsamer, weil keine statisch initialisierten globalen Variablen benutzt werden können. Diese Auswirkungen sind allerdings minimal.

Jeder SQLCA-Bereich, der in Ihrem Programm benutzt wird, muss mit einem Aufruf von db_init initialisiert und am Ende mit einem Aufruf von db_fini wieder freigegeben werden.

Die Embedded SQL-Anweisung SET SQLCA wird verwendet, um den SQL-Präprozessor anzuweisen, einen anderen SQLCA-Bereich für Datenbankanforderungen zu verwenden. Ein Beispiel ist die folgende Anweisung: EXEC SQL SET SQLCA 'task_data->sqlca'; wird zu Beginn eines Programms oder in einer Header-Datei verwendet, um SQLCA-Referenzen so einzustellen, dass sie auf Task-spezifische Daten zeigen. Die Performance ist nicht betroffen, weil diese Anweisung keinen Code generiert. Sie ändert den Status innerhalb des Präprozessors, sodass jede Referenz auf den SQLCA-Bereich die angegebene Zeichenfolge benutzt.

Jeder Thread braucht seinen eigenen SQLCA-Bereich. Diese Einschränkung gilt auch für Code in einer Shared Library (einer DLL beispielsweise), die Embedded SQL benutzt und in Ihrer Anwendung von mehr als einem Thread aufgerufen wird.

Sie können die Unterstützung mehrfacher SQLCAs in jeder der unterstützten Embedded SQL-Umgebungen verwenden, sie ist jedoch nur für reentrant-Code erforderlich.

Sie müssen nicht mehrere SQLCA-Bereiche verwenden, um Verbindungen zu mehr als einer Datenbank herzustellen oder um mehr als eine Verbindung zu einer einzelnen Datenbank zu halten.

Jeder SQLCA-Bereich kann über eine nicht benannte Verbindung verfügen. Jeder SQLCA-Bereich hat eine aktive oder aktuelle Verbindung.

Alle Vorgänge über eine Datenbankverbindung müssen denselben SQLCA-Bereich verwenden, der beim Einrichten der Verbindung benutzt wurde.

Hinweis

Vorgänge, die sich auf verschiedene Verbindungen beziehen, sind den normalen Datensatz-Sperrmechanismen unterworfen und können sich gegenseitig blockieren oder möglicherweise zu einer Deadlock-Situation führen.

 Siehe auch