Ejecuta una secuencia de consulta SQL para la ocurrencia de la tabla especificada en la base de datos de FileMaker Pro Advanced.
ExecuteSQL(consultaSql; separadorCampo; separadorFila {;argumentos...})
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 que se evalúan y utilizan como valores de los parámetros dinámicos en la secuencia de consulta.
texto
FileMaker Pro 12.0
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).
Si se produce un error durante el análisis o la ejecución de la consulta, FileMaker Pro Advanced devuelve ?.
•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.
Imagine que una base de datos contiene dos tablas, Empleados y Salarios, que están relacionadas mediante el campo IDEmp.
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.
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.