Benutzer-Werkzeuge

Webseiten-Werkzeuge


engine:settings:settings_assignmentmethodforlistvariables

Settings: AssignmentMethodForListVariables

Seit Engine-Version 5.5.1, optional, globale Einstellung

Datentyp der Werte: tinyint

In mehreren Prozeduren werden (intern verwendete) Variablen mit „Listen von Werten“ belegt, bei der ein spezielles Verhalten des ASE ausgenutzt wird :

Bei einem statement der Form „SELECT @var = TableColumn FROM TableX“ wir die Variable „@var“ mit dem Wert des letzten Datensatzes belegt, wobei aber prinzipiell eine Wert-Zuweisung für jeden Datensatz erfolgt.

Dies kann man ausnutzen, um „sehr wenige Werte“ als Liste in einer Variablen zu speichern, und zwar vom Prinzip her so :

„SELECT @ListVar = @ListVar + convert(varchar, TableColumn) + ',' FROM TableX“.

Dies hat den Vorteil, daß man keinen „cursor“ benötigt, der signifikant langsamer ist als der obige einfach „table scan“ !

Nun hat sich aber leider das beschriebene Verhalten ab der ASE-Version 15.0.2 geändert. Man kann dasselbe Ziel zwar mit einem statment der Art …

„UPDATE TableX SET @ListVar = @ListVar + convert(varchar, TableColumn) + ','“ erreichen, aber diese Syntax wird wiederum in der ASE-Version 11.x nicht unterstützt.

Somit bleibt nach bisherigem Kenntnisstand nur die Alternative, mit einem „cursor“ zu arbeiten.

Um nun zu steuern, welches Verhalten verwendet werden soll, dient dieser Schlüssel („AssignmentMethodForListVariables“).

Ist „1“ konfiguriert, wird ein „cursor“ verwendet, in allen anderen Fällen (also auch wenn gar kein Wert konfiguriert ist) wird das oben beschriebene Verhalten angewandt.

Anmerkung : Es kann also sein, daß vielleicht irgendwann in Zukunft noch eine weitere Variante möglich ist, was mit dem Wert „2“ erzwungen würde. Man sollte also entweder den Wert „1“ konfigurieren (weil man muß) oder gar nichts !

engine/settings/settings_assignmentmethodforlistvariables.txt · Zuletzt geändert: 11.01.2016 (Externe Bearbeitung)