Referencia > Referencia de funciones > Funciones lógicas > ExecuteSQL
 

ExecuteSQL

Ejecuta una secuencia de consulta SQL para la ocurrencia de la tabla especificada en la base de datos de FileMaker Pro Advanced.

Formato 

ExecuteSQL ( consultaSql; separadorCampo; separadorFila {; argumentos... } )

Parámetros 

consultaSql: una secuencia SQL SELECT. La secuencia puede incluirse en una cláusula Union que combine los resultados de dos consultas. La secuencia puede incluir parámetros (dinámicos) SQL generados mediante programación que indiquen en qué parte de la consulta se utilizarán los argumentos opcionales. Utilice el carácter de signo de interrogación (?) para especificar un parámetro dinámico.

separadorCampo: la cadena de caracteres utilizada como separador entre los campos incluidos en los resultados. Si se especifica una cadena vacía, el separador será una coma. El separador de campo no se muestra tras el último campo de los resultados.

separadorFila: la cadena de caracteres utilizada como separador entre los registros incluidos en los resultados. Si se especifica una cadena vacía, el separador será un retorno de carro. El separador de fila no se muestra tras la última fila de los resultados.

argumentos: una o varias expresiones separadas por punto y coma (;) que se evalúan y utilizan como valores de los parámetros dinámicos en la secuencia de consulta.

Tipo de datos devuelto 

texto

Se origina en 

FileMaker Pro 12.0

Descripción 

ExecuteSQL permite ejecutar secuencias SQL SELECT que contienen parámetros dinámicos para realizar una consulta de forma segura en las bases de datos de FileMaker Pro Advanced a fin de evitar las vulnerabilidades de seguridad debido a ataques de introducción de código.

ExecuteSQL no reconoce las relaciones creadas en FileMaker Pro Advanced, lo que le ofrece la flexibilidad de definir relaciones en secuencias SQL y recuperar datos de cualquier tabla independientemente del contexto de la presentación.

ExecuteSQL no se puede utilizar con secuencias SQL que modifiquen datos o el esquema de la base de datos (como, por ejemplo, los comandos Insertar en o Eliminar tabla).

Cuando emplea múltiples parámetros dinámicos en consultaSql, el primer signo de interrogación se reemplaza por el primer parámetro de argumentos, el segundo por el segundo, y así sucesivamente.

Si se produce un error durante el análisis o la ejecución de la consulta, FileMaker Pro Advanced devuelve ?.

Notas 

Para aplicar el formato correcto a las fechas en una consulta SQL, utilice la secuencia DATE. Si no usa la secuencia DATE, ExecuteSQL trata las fechas como cadenas literales.

FileMaker Pro Advanced devuelve los datos de fecha, hora y número en formato Unicode/SQL, no con la configuración local del sistema operativo o del archivo.

ExecuteSQL acepta solo los formatos de hora y fecha ISO de sintaxis SQL-92 sin corchetes. ExecuteSQL no acepta las constantes de fecha y hora, hora y fecha de formato ODBC/JDBC con corchetes.

FileMaker SQL utiliza el tipo de ordenación binario Unicode, que es diferente al tipo de ordenación de FileMaker Pro Advanced utilizado con la ordenación en función del idioma o la ordenación predeterminada neutra respecto al idioma.

Para obtener más información sobre la sintaxis de la secuencia SELECT, las secuencias SQL compatibles, las expresiones y las funciones de catálogo, consulte la Guía ODBC y JDBC de FileMaker y la Referencia SQL de FileMaker.

La función ExecuteSQL usa secuencias SQL SELECT para consultar tablas en fuentes de datos de FileMaker, no en fuentes de datos ODBC. Para ejecutar SELECT y otras secuencias SQL admitidas en fuentes de datos ODBC, utilice el paso de guión Ejecutar SQL.

Ejemplo 1 

Imagine que una base de datos contiene dos tablas, Empleados y Salarios, que están relacionadas mediante el campo IDEmp.

Lista que muestra empleados y salarios

Nota  Los campos Empleados::IDEmp, Salarios::IDEmp y Salarios::Salario son numéricos.

Puede ejecutar la función ExecuteSQL para devolver un valor de campo de un registro específico sin modificar el registro actual o el conjunto encontrado.

ExecuteSQL ( "SELECT Departamento FROM Empleados WHERE IDEmp = 1"; ""; "" ) devuelve Desarrollo, independientemente del registro, el conjunto encontrado o la presentación actuales.

Ejemplo 2 

Imagine que desea añadir un campo a la tabla Empleados para mostrar el porcentaje del salario de un empleado en relación con el total de los salarios de un departamento. Aunque podría utilizar un cálculo en FileMaker Pro Advanced para generar este valor, puede usar la función ExecuteSQL para especificar esta consulta mediante parámetros dinámicos. En el ejemplo siguiente, se utilizan alias de tabla para la tabla Empleados (E) y la tabla Salarios (S) al especificar campos (S.Salario, E.IDEmp, y S.IDEmp).

Defina un campo de cálculo en la tabla Empleados y, a continuación, utilice la función ExecuteSQL para especificar la siguiente secuencia de consulta:

Round (
   100 * Salarios::Salario / ExecuteSQL (
      "SELECT SUM (S.Salario)
      FROM Empleados E
      JOIN Salarios S
      ON E.IDEmp = S.IDEmp
      WHERE E.Departamento = ?";
      ""; ""; Empleados::Departamento
   ) ;
2 )

En cada registro de empleado, el campo de cálculo muestra el porcentaje del salario del empleado en relación con la suma de salarios del departamento del empleado. Por ejemplo, el registro con el apellido "Smith" devuelve 52,97 y el registro con el apellido "Mehmet" devuelve 100.

Temas relacionados 

Referencia de funciones (lista de categorías)

Referencia de funciones (orden alfabético)

Acerca de las fórmulas

Notas acerca de las funciones

Definir campos de cálculo

Operadores en fórmulas