ExecuteSQL

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 separadas por ponto e vírgula (;) que são avaliadas e usadas como valores para os parâmetros dinâmicos na instrução de consulta.

Tipo de dados retornado

texto

Originada na versão

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).

Quando você usa vários parâmetros dinâmicos na sqlQuery, o primeiro caractere de ponto de interrogação é substituído pelo primeiro parâmetro argumentos, o segundo caractere é substituído pelo segundo parâmetro e assim por diante.

Se ocorrer um erro durante a análise ou a execução da consulta, o 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.
  • 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.

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 (Salários Percentuais do Departamento) na tabela Funcionários e, em seguida, use a função ExecuteSQL para especificar uma instrução de consulta no seguinte cálculo:

Copiar
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 )

Nota  Como esse cálculo precisa obter o salário do funcionário da tabela Salários (Salários::Salário), você deve criar um relacionamento entre os campos Funcionários::EmpID e Salários::EmpID no gráfico de relacionamentos (consulte Criação e alteração de relacionamentos). Em contraste, a função ExecuteSQL não usa o gráfico de relacionamentos. Então, neste exemplo, a cláusula JOIN estabelece o relacionamento usado pela instrução SELECT no ExecuteSQL.

Para cada registro de funcionário, o campo Porcentagem dos Salários do Departamento calcula a porcentagem do salário do funcionário em relação à soma dos salários do departamento do funcionário.

Funcionários
EmpID Sobrenome Departamento Porcentagem de Salários do Departamento
1 Smith Desenvolvimento 52,97
2 Ogawa Desenvolvimento 47,03
3 Durand Qualidade 48,86
4 Garcia Qualidade 51,14
5 Mehmet Documentação 100
6 Ferrini Marketing 100