Referência > Referência de funções > Funções lógicas > ExecuteSQL
 

ExecuteSQL

Executa uma instrução de consulta SQL para a ocorrência de tabela especificada em um arquivo do FileMaker Pro Advanced.

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 Advanced 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 Advanced, 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 Advanced 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 Advanced 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 Advanced 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.

A função ExecuteSQL usa instruções SQL SELECT para consultar tabelas em fontes de dados do FileMaker, não em fontes de dados ODBC. Para executar SELECT e outras instruções SQL suportadas em fontes de dados ODBC, use a etapa de script Executar SQL.

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.

Equação

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 Advanced 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