DBEXECUTEFIXED
DBEXECUTEFIXED es una alternativa a DBEXECUTE que admite parámetros. A diferencia de DBEXECUTE, se puede utilizar en entornos tanto locales como en la nube, así como en aplicaciones personalizadas o extendidas.
La instrucción SQL se trata como texto fijo y, por lo tanto, no puede hacer referencia directamente a variables.
Si la instrucción se encuentra en una celda no protegida, puede actualizar el valor que devuelve pero, a diferencia de DBEXECUTE, no puede añadir nuevas filas.
Los nombres de parámetros distinguen entre mayúsculas y minúsculas.
Sintaxis
La fórmula DBEXECUTEFIXED tiene estos parámetros.
- Alias: especifica la conexión de datos relacionales que se define en EPM Administration.
- Instrucción SELECT: se utiliza para recuperar datos de la base de datos. Se trata de un comando SQL SELECT. Para habilitar la base de datos que se va a actualizar, la consulta debe incluir la clave primaria. SQL SELECT puede devolver varios valores de una fila, pero DBEXECUTEFIXED los ignora todos, salvo el primero. Por lo tanto, para devolver y reescribir un valor que no sea la clave primaria, asegúrese de que la clave primaria no es el primer valor solicitado por la instrucción. Para la reescritura, la celda que contiene la consulta debe estar desprotegida.
- Valores de parámetros: puede utilizar parámetros de valor único y de valor múltiple. En las instrucciones SQL, haga referencia a parámetros de valor único con
@[parameter_name]
. Haga referencia a parámetros de valor múltiple con@@[parameter_name]
. Los valores en parámetros de valor múltiple se deben separar con la barra vertical(|)
.
=DBEXECUTEFIXED("alias", "select_statement", {, "parameter"})
Los nombres de parámetros se asignan automáticamente como p1, p2, etc.
Ejemplo
En este ejemplo, la fórmula devuelve el nombre de elemento en el que el id. tiene el valor que actualmente se incluye en la variable de informe rv_configs. items.ID
es la clave primaria.
=DBEXECUTEFIXED("configdb", "SELECT items.name,items.ID FROM items WHERE Id=@p1",ReportVariables.rv_configs.Text)
items.id
es la clave primaria. Si la fórmula se encuentra en una celda no protegida y devuelve un valor, puede actualizar el valor: en este ejemplo, el nombre de elemento.
Como toda la instrucción SQL se trata como texto, no hay requisito para concatenar los valores de cadena con el carácter &
, ya que es necesario en estas fórmulas DBEXECUTE:
=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 sintaxis de la concatenación difiere porque, en el primer ejemplo, el valor al que se hace referencia es numérico y en el segundo es de texto.