SQL-DDL-Anweisungen, die Auswirkungen auf Datenbankobjekte haben, auf die statische SQL-Anweisungen verweisen

SQL-DDL-Anweisungen (DDL - Data Definition Language) können bei statisch ausgeführten DML-Anweisungen (DML - Data Manipulation Language) zu Problemen führen, wenn die DDL-Anweisungen Datenbankverwaltungssystemobjekte erstellen, löschen oder ändern, auf die die DML-Anweisungen verweisen. Die Probleme können selbst dann auftreten, wenn die DDL-Anweisungen nur einmal ausgeführt werden, nachdem die DDL- und DML-Anweisungen gebunden wurden.

Wenn die DDL-Anweisungen ausgeführt werden, machen sie die Zugriffspläne von statischen SQL-DML-Anweisungen ungültig, die auf die Objekte verweisen, die die DDL-Anweisungen erstellen, ändern oder löschen. Die DML-Anweisungen können weiterhin ausgeführt werden, obwohl ihre Zugriffspläne ungültig gemacht wurden. Die Ausführung der DML-Anweisungen generiert keine Warnungen oder Fehlernachrichten.

Wenn Zugriffspläne ungültig gemacht werden, sind zwei Konsequenzen möglich:

In beiden Fällen bietet Ihre Nicht-pureQuery-API-Anwendung zwei der wichtigsten Vorteile von statischem SQL nicht mehr: gleichbleibende Zugriffspfade und potenzielle Leistungssteigerungen.

IBM® empfiehlt, dass Anwendungen, die Sie mit Clientoptimierung verwenden, keine DDL-Anweisungen ausführen.

Wenn Ihre Anwendung DDL-Anweisungen verwendet, die gebunden sind, und executionMode auf den Wert STATIC gesetzt ist, führt pureQuery die DDL-Anweisungen aus.

Wenn Ihre Anwendung DDL-Anweisungen verwendet, die nicht gebunden sind, und executionMode auf den Wert STATIC und allowDynamicSQL auf den Wert TRUE gesetzt ist, führt pureQuery die DDL-Anweisungen ebenfalls aus. Wenn Ihre Anwendung jedoch DDL-Anweisungen verwendet, die nicht gebunden sind, der Wert von executionMode auf STATIC und der Wert von allowDynamicSQL auf FALSE gesetzt ist, führt pureQuery die DDL-Anweisungen aus und gibt eine Ausnahmebedingung aus, die angibt, dass die statische Anweisung nicht gefunden wurde.


Feedback