DBEXECUTEFIXED
DBEXECUTEFIXED ist eine Alternative zu DBEXECUTE, die Parameter unterstützt. Im Gegensatz zu DBEXECUTE kann diese Funktion sowohl in einer Cloud als auch in On-Premise-Umgebungen und in benutzerdefinierten Anwendungen verwendet werden.
Die SQL-Anweisung wird als fester Text behandelt und kann daher nicht direkt auf Variablen verweisen.
Wenn sich die Anweisung in einer ungeschützten Zelle befindet, können Sie den Wert, den sie zurückgeben, im Gegensatz zu DBEXECUTE zwar aktualisieren, aber keine neuen Zeilen hinzufügen.
Bei Parameternamen ist die Groß-/Kleinschreibung zu beachten:
Syntax
Die DBEXECUTEFIXED-Formel hat folgende Parameter.
- Alias: Dieser gibt die relationale Datenverbindung an, die in EPM Administration definiert ist.
- SELECT-Anweisung: Diese wird verwendet, um Daten aus der Datenbank abzurufen. Es handelt sich um einen SQL-SELECT-Standardbefehl. Um die zu aktualisierende Datenbank zu aktivieren, muss die Abfrage den Primärschlüssel enthalten. Der SQL-SELECT-Befehl kann mehrere Werte aus einer Zeile zurückgeben, allerdings ignoriert DBEXECUTEFIXED alle bis auf den ersten. Um also einen Wert zurückzugeben und zurückzuschreiben, der nicht der Primärschlüssel ist, stellen Sie sicher, dass der Primärschlüssel nicht der erste von der Anweisung angeforderten Wert ist. Für das Zurückschreiben darf die Zelle, die die Abfrage enthält, nicht geschützt sein.
- Parameterwerte: Sie können Parameter mit einem einzelnen Wert und mit mehreren Werten verwenden. In SQL-Anweisungen referenzieren Sie die Einzelwert-Parameter mit
@[parameter_name]
. Referenzieren Sie mehrwertige Parameter mit@@[parameter_name].
Werte in mehrwertigen Parametern müssen durch das Pipe-Zeichen|
voneinander getrennt werden.
=DBEXECUTEFIXED("alias", "select_statement", {, "parameter"})
Parameternamen werden automatisch als p1, p2 usw. zugewiesen.
Beispiel
Im folgenden Beispiel gibt die Formel den Elementnamen zurück, bei dem die ID aktuell in der Berichtsvariable rv_config gespeichert ist. items.ID
ist der Primärschlüssel.
=DBEXECUTEFIXED("configdb", "SELECT items.name,items.ID FROM items WHERE Id=@p1",ReportVariables.rv_configs.Text)
items.id
ist der Primärschlüssel. Befindet sich die Formel in einer ungeschützten Zelle und gibt einen Wert zurück, können Sie den Wert aktualisieren, in diesem Beispiel den Elementnamen.
Da die gesamte SQL-Anweisung als Text behandelt wird, müssen die Zeichenfolgenwerte nicht mit dem &
-Zeichen verkettet werden, wie dies in den folgenden DBEXECUTE-Formeln erforderlich ist:
=DBEXECUTE("configdb", "SELECT items.name,items.ID FROM items WHERE Id="&ReportVariables.rv_configs.Text)
=DBEXECUTE("configdb", "SELECT items.ID,items.name FROM items WHERE name='"&ReportVariables.rv_name.Text&"'")
Die Syntax der Verkettung unterscheidet sich, da im ersten Beispiel der referenzierte Wert numerisch und im zweiten Beispiel ein Text ist.