ExecuteSQL
Propósito
Ejecuta una secuencia de consulta SQL para la ocurrencia de la tabla especificada en la base de datos de FileMaker Pro.
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 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 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, 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 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 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 utilizado con la ordenación en función del idioma o la ordenación predeterminada neutra respecto al idioma.
Ejemplo 1
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.
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 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