DEFER und NODEFER Bindungsoptionen

Die Optionen DEFER und NODEFER legen fest, ob die Vorbereitung für dynamische SQL-Anweisungen, die sich auf Remote-Objekte beziehen, aufgeschoben oder sofort vorbereitet werden soll.

Befehlsoption Optionswerte Verwendet mit
  • NODEFER
  • VERZÖGERN
  • NODEFER(VORBEREITEN)
  • AUFSCHIEBEN(VORBEREITEN)
  • AUFSCHIEBEN(AUS DEM PLAN ERBEN) 1
Hinweis:
  1. Die Option DEFER(INHERITFROMPLAN) gilt nicht für das erneute BINDEN von Paketen für native REST-Dienste.
  2. Die Bindungsoptionen DEFER und NODEFER sind für REBIND von Paketen für native SQL-Prozeduren oder erweiterte Trigger nicht gültig.

Wenn Sie die Vorbereitung aufschieben, wird die dynamische Anweisung vorbereitet, wenn Db2 zum ersten Mal auf eine Anweisung des Typs EXECUTE, OPEN oder DESCRIBE trifft, die sich auf die dynamische Anweisung bezieht.

Für BIND- und REBIND-PAKET, wenn keine der Optionen angegeben ist und REOPT(NONE) gilt:
  • Bei lokalen Bindungen erbt das Paket die Option des Plans zur Laufzeit.
  • Für die Remote-Bindung ist die Standardeinstellung NODEFER(PREPARE) auf dem Remote-Server Db2 .

Wenn Sie die Bindungsoption REOPT(ALWAYS), REOPT(AUTO) oder REOPT(ONCE) angeben, setzt Db2 automatisch die Bindungsoption DEFER(PREPARE).

Sie können nicht sowohl DEFER als auch NODEFER verwenden.

Beschreibungen der Optionen für DEFER und NODEFER

NODEEFER( VORBEREITEN )
Verschiebt die Vorbereitung nicht auf später.
DEFER(PREPARE)
Verschiebt die Vorbereitung.
DEFER(INHERITFROMPLAN)
Ermöglicht es einem lokalen Paket, den Wert der DEFER-Option vom Plan zu übernehmen, unabhängig davon, ob das Paket remote oder lokal gebunden wurde.

Wenn Sie ein Paket remote mit der Option DEFER(INHERITFROMPLAN) binden und der Remote-Server den Wert INHERITFROMPLAN nicht versteht, gibt der Server möglicherweise einen Fehler zurück.

Der Wert DEFER(INHERITFROMPLAN) wird in den folgenden Situationen nicht angewendet, da kein zugehöriger Plan existiert:

  • Wenn Sie die Anwendung lokal binden und das Paket dann auf einen Remote-Server kopieren.
  • Wenn Sie eine Anwendung binden, die RRSAF verwendet.
  • Für alle Pakete, die für Versorgungsunternehmen erstellt werden

In diesen Fällen gilt für das Paket NODEFER(PREPARE).

DEFER(PREPARE) und verteilte Verarbeitung

Geben Sie die Bindungsoption DEFER(PREPARE) an, um die Leistung zu verbessern, anstelle von NODEFER(PREPARE), und wenn Sie dynamisches SQL für den DRDA-Zugriff binden. Db2 bereitet die dynamische SQL-Anweisung erst vor, wenn diese ausgeführt wird. (Die Ausnahme von dieser Situation ist dynamisches SELECT, das PREPARE und DESCRIBE kombiniert, unabhängig davon, ob die Option DEFER(PREPARE) in Kraft ist.) Wenn eine dynamische SQL-Anweisung auf Remote-Daten zugreift, können die Anweisungen PREPARE und EXECUTE zusammen über das Netzwerk übertragen und am Remote-Standort verarbeitet werden. Die Antworten auf beide Aussagen können zusammen an das lokale Subsystem zurückgesendet werden. Dies reduziert den Netzwerkverkehr, was die Leistung der dynamischen SQL-Anweisung verbessert.

PREPARE-Anweisungen, die INTO-Klauseln enthalten, werden nicht zurückgestellt.

Um die Vorbereitung einer SQL-Anweisung in einer Anwendung zu verschieben, binden oder binden Sie die Anwendung mit der Option DEFER(PREPARE) neu. Dadurch werden PREPARE-Meldungen für SQL-Anweisungen, die sich auf ein Remote-Objekt beziehen, aufgeschoben, bis entweder:
  • Die Anweisung wird ausgeführt
  • Die Anwendung fordert eine Beschreibung der Ergebnisse der Erklärung an

Wenn Sie sich dafür entscheiden, die PREPARE-Anweisungen nach der EXECUTE- oder DESCRIBE-Anweisung zu verschieben, sollten Sie Ihre Anwendung so programmieren, dass sie alle SQL-Fehlercodes oder SQLSTATEs verarbeitet, die die PREPARE-Anweisung möglicherweise zurückgibt. Sie können PREPARE-Anweisungen nur verschieben, wenn Sie die Bindungsoption DEFER(PREPARE) angeben.

Standardwerte für DEFER und NODEFER

Prozess Standardwert
BINDUNGSPLAN NODEFER
Binden von Paketen Planwert
PLAN NEU ERSTELLEN Vorhandener Wert
Anweisung REBIND PACKAGE - Paket erneut binden Vorhandener Wert

Katalogdatensätze für DEFER und NODEFER

Siehe die Spalte DEFERPREP in der Katalogtabelle SYSPLAN oder die Spalte DEFERPREPARE in der Katalogtabelle SYSPACKAGE.