DBEXECUTEFIXED

DBEXECUTEFIXED è un'alternativa a DBEXECUTE che supporta parametri. A differenza di DBEXECUTE, può essere utilizzata sia in ambienti cloud che on-premise e in applicazioni personalizzate o estese.

L'istruzione SQL viene trattata come testo fisso e, di conseguenza, non possono essere presenti direttamente variabili di riferimento.

Se l'istruzione si trova in una cella non protetta, è possibile aggiornare il valore che restituisce ma, al contrario di DBEXECUTE, non è possibile aggiungere nuove righe.

Nota

Per i nomi di parametro viene fatta distinzione tra maiuscole e minuscole.

Sintassi

La formula DBEXECUTEFIXED ha i seguenti parametri.

  1. Alias: specifica la connessione dati relazionale definita in d/EPM Administration.
  2. Istruzione SELECT: consente di recuperare dati dal database. Si tratta di un comando SQL SELECT standard. Per consentire l'aggiornamento del database, la query deve includere la chiave primaria. SQL SELECT può restituire più valori da una riga, ma DBEXECUTEFIXED li ignora tutti ad eccezione del primo. Per restituire ed eseguire il writeback di un valore che non è la chiave primaria, assicurarsi che la chiave primaria non sia il primo valore richiesto dall'istruzione. Per il writeback, la cella contenente la query non deve essere protetta.
  3. Valori parametro: è possibile utilizzare parametri a valore singolo e a più valori. Nelle istruzioni SQL, fare riferimento ai parametri a valore singolo con @[parameter_name]. Fare riferimento ai parametri a più valori con @@[parameter_name]. I valori nei parametri a più valori devono essere separati con una barra verticale (|).
=DBEXECUTEFIXED("alias", "select_statement", {, "parameter"})

I nomi dei parametri vengono assegnati automaticamente come p1, p2 ecc.

Esempio

In questo esempio la formula restituisce il nome dell'elemento in cui l'ID ha il valore attualmente memorizzato nella variabile di report rv_configs. items.ID è la chiave primaria.

=DBEXECUTEFIXED("configdb", "SELECT items.name,items.ID FROM items WHERE Id=@p1",ReportVariables.rv_configs.Text)

items.ID è la chiave primaria. Se la formula si trova in una cella non protetta e restituisce un valore, è possibile aggiornare il valore: in questo esempio, il nome dell'elemento.

Nota

Poiché l'intera istruzione SQL viene trattata come testo, non è presente alcun requisito per la concatenazione dei valori stringa con il carattere &, come necessario nelle formule DBEXECUTE riportate di seguito:

=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&"'")

La sintassi della concatenazione è diversa perché, nel primo esempio, il valore a cui si fa riferimento è numerico e nel secondo è di testo.