Parameter in Abfragen verwenden

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Abfrage-Datenmengen


Eine parametrisierte SQL-Anweisung enthält Parameter oder Variablen, deren Werte sich zur Entwurfs- oder Laufzeit ändern können. Parameter können für Datenwerte stehen. Ein Beispiel dafür sind die Werte in der WHERE-Vergleichsklausel einer SQL-Anweisung. Normalerweise stehen Parameter für Datenwerte, die an die Anweisung übergeben werden sollen. In der folgenden INSERT-Anweisung werden die einzufügenden Werte als Parameter übergeben:

INSERT INTO Country (Name, Capital, Population)
VALUES (:Name, :Capital, :Population)

In dieser SQL-Anweisung sind :Name, :Capital und :Population Platzhalter für die eigentlichen Werte, die der Anweisung zur Laufzeit von Ihrer Anwendung übergeben werden. Beachten Sie, dass die Parameternamen mit einem Doppelpunkt beginnen. Daran Sie können sie von Literalwerten unterscheiden. Auch die Aufnahme nicht benannter Parameter in eine Abfrage ist möglich. Hierzu brauchen Sie nur ein Fragezeichen einzugeben. Unbenannte Parameter werden über ihre Position identifiziert, weil sie keine eindeutigen Namen besitzen.

Bevor eine solche Abfrage ausgeführt werden kann, müssen Sie Werte für die Parameter im Text der Abfrage angeben. Diese Werte werden bei TQuery, TIBQuery, TSQLQuery und bei Client-Datenmengen in der Eigenschaft Params gespeichert. TADOQuery verwendet stattdessen die Eigenschaft Parameters. Params (bzw. Parameters) ist eine Sammlung von Parameterobjekten (vom Typ Data.DB.TParam bzw. ADOdb.TParameter), bei denen jedes Objekt für einen einzelnen Parameter steht. Wenn Sie den Text für die Abfrage angeben, generiert die Datenmenge die betreffende Gruppe von Parameterobjekten und initialisiert (je nach Datenmengentyp) alle Eigenschaften, die aus der Abfrage abgeleitet werden können.

Anmerkung:  Sie können das automatische Generieren von Parameterobjekten bei Änderungen am Abfragetext unterdrücken. Hierzu setzen Sie einfach die Eigenschaft ParamCheck auf False. Diese Einstellung ist bei DDL-Anweisungen sinnvoll, die Parameter enthalten, die allerdings nicht für die Abfrage selbst gelten. So ist es beispielsweise möglich, dass über die DDL-Anweisung zum Erstellen einer Stored Procedure Parameter definiert werden, die zur Stored Procedure gehören. Wenn Sie ParamCheck auf False setzen, verhindern Sie damit, dass diese Parameter mit den Abfrageparametern verwechselt werden.

Bevor eine SQL-Anweisung zum ersten Mal ausgeführt wird, müssen die Parameterwerte in die SQL-Anweisung eingebunden werden. Bei Abfragekomponenten geschieht dies automatisch, auch wenn Sie die Methode Prepare vor der Ausführung nicht explizit aufrufen.

Tip:  Es hat sich bewährt, beim Programmieren Variablennamen für die Parameter festzulegen, die den jeweiligen tatsächlichen Spaltennamen entsprechen. Wenn beispielsweise eine Spalte Number heißt, wird der entsprechende Parameter :Number genannt. Die Verwendung dieser Namensentsprechungen ist besonders wichtig, wenn die Datenmenge unter Verwendung einer Datenquelle Parameterwerte aus einer anderen Datenmenge abruft. Dieser Prozess wird unter Haupt/Detail-Beziehungen einrichten beschrieben.

Die folgenden Themen beschreiben, wie die Datentypen und Werte von Parametern für die Abfrage festgelegt werden.

Siehe auch