Referência > Referência de funções > Funções lógicas > ExecuteSQL
 
ExecuteSQL
Propósito 
Executa uma instrução de consulta SQL para a ocorrência de tabela especificada em um arquivo do FileMaker Pro.
Formato 
ExecuteSQL(consultaSql;separadorDeCampo;separadorDeLinha{;argumentos...})
Parâmetros 
consultaSql - uma instrução SQL SELECT. A instrução pode incluir uma cláusula Union que combina os resultados de duas consultas. A instrução pode conter SQL gerado programaticamente (parâmetros dinâmicos) que indicam onde os argumentos opcionais precisam ser usados na consulta. Use o caractere de ponto de interrogação (?) para especificar um parâmetro dinâmico.
separadorDeCampo - a cadeia de caracteres usada como um separador entre campos no resultado. Se uma cadeia vazia for especificada, o separador será uma vírgula. O separador de campo não é exibido após o último campo no resultado.
separadorDeLinha - a cadeia de caracteres usada como um separador entre registros no resultado. Se uma cadeia vazia for especificada, o separador será um retorno de carro. O separador de linha não é exibido após a última linha no resultado.
argumentos - uma ou mais expressões avaliadas e usadas como valores para os parâmetros dinâmicos na instrução de consulta.
Tipo de dados retornado 
texto
Originado em 
FileMaker Pro 12.0
Descrição 
ExecuteSQL permite executar instruções SQL SELECT que contêm parâmetros dinâmicos para consultar os bancos de dados do FileMaker Pro com segurança a fim de evitar vulnerabilidades de segurança por meio de ataques de injeção.
ExecuteSQL não reconhece os relacionamentos criados no FileMaker Pro, que proporcionam flexibilidade para definir relacionamentos em instruções SQL e para recuperar dados de qualquer tabela, independente do contexto do layout.
ExecuteSQL não pode ser usado com instruções SQL que modificam dados ou o esquema de banco de dados (como os comandos Inserir em ou Excluir tabela).
Se ocorrer um erro durante a análise ou a execução da consulta, o FileMaker Pro retornará ?.
Notas 
Para aplicar a formatação correta a datas em uma consulta SQL, use a instrução DATE. Se não usar a instrução DATE, ExecuteSQL tratará as datas como cadeias de caracteres literais.
O FileMaker Pro retorna dados de data, hora e número no formato Unicode/SQL, não no formato da localidade do sistema operacional ou do arquivo.
ExecuteSQL aceita apenas os formatos de data e hora ISO da sintaxe SQL-92 sem chaves. ExecuteSQL não aceita o formato ODBC/JDBC para constantes de data, hora e carimbo de data/hora em chaves.
O FileMaker SQL usa a ordem de classificação binária Unicode, que é diferente da ordem de classificação do FileMaker Pro usada com a classificação de idioma ou com a ordem de classificação neutra com relação a idiomas.
Para obter mais detalhes sobre a sintaxe da instrução SELECT, instruções SQL compatíveis, expressões e funções de catálogo, consulte o Guia de ODBC e JDBC do FileMaker e as Referências de SQL do FileMaker.
Exemplo 1 
Suponha que um banco de dados contenha duas tabelas, Funcionários e Salários, que estão relacionadas por meio do campo EmpID.
Lista que exibe funcionários e salários
Nota  Os campos Funcionários::EmpID, Salários::EmpID e Salários::Salário são numéricos.
Você pode usar a função ExecuteSQL para retornar um valor de campo de um registro específico sem alterar o registro atual ou modificar o conjunto encontrado.
ExecuteSQL("SELECT Departamento FROM Funcionários WHERE EmpID = 1"; ""; "") retorna Desenvolvimento, independentemente do registro atual, do conjunto encontrado ou do layout.
Exemplo 2 
Suponha que você queira adicionar um campo à tabela Funcionários para exibir a porcentagem do salário de um funcionário em relação ao total de salário de um departamento. Embora seja possível usar um cálculo no FileMaker Pro para gerar esse valor, você pode usar a função ExecuteSQL para especificar essa consulta usando parâmetros dinâmicos. O exemplo abaixo usa aliases de tabela para a tabela Funcionários (E) e a tabela Salários (S) ao especificar campos (S.Salário, E.EmpID e S.EmpID).
Defina um campo de cálculo na tabela Funcionários e use a função ExecuteSQL para especificar a seguinte instrução de consulta:
Round(
   100 * Salários::Salário / ExecuteSQL(
      "SELECT SUM(S.Salário)
      FROM Funcionários E
      JOIN Salários S
      ON E.EmpID = S.EmpID
      WHERE E.Departamento = ?";
      ""; ""; Funcionários::Departamento
   );
2)
Em cada registro do funcionário, o campo de cálculo exibe a porcentagem do salário do funcionário em relação à soma dos salários do departamento do funcionário. Por exemplo, o registro com um sobrenome de "Smith" retorna 52,97, e o registro com um sobrenome de "Mehmet" retorna 100.
Tópicos relacionados 
Referência de funções (lista de categorias)
Referência de funções (lista em ordem alfabética)
Sobre fórmulas
Sobre funções
Definição de campos de cálculo
Utilização de operadores em fórmulas