EseguiSQL

Esegue un'istruzione di una query SQL per la ricorrenza di tabella specificata in un file FileMaker Pro.

Formato 

EseguiSQL ( querySQL ; separatoreCampo ; separatoreRiga { ; argomenti... } )

Parametri 

querySQL - un'istruzione SELECT SQL. L'istruzione può comprendere una clausola Union che combina i risultati delle due query. L'istruzione può contenere SQL generate programmaticamente (parametri dinamici) che indicano dove utilizzare argomenti opzionali nella query. Utilizzare il punto di domanda (?) per specificare un parametro dinamico.

separatoreCampo - la stringa di carattere utilizzata come separatore tra i campi nel risultato. Se viene specificata una stringa vuota, il separatore è una virgola. Il separatore di campo non viene visualizzato dopo l'ultimo campo nel risultato.

separatoreRiga - la stringa di carattere utilizzata come separatore tra i record nel risultato. Se viene specificata una stringa vuota, il separatore è un ritorno a capo. La riga separatore non viene visualizzata dopo l'ultima riga nel risultato.

argomenti - una o più espressioni separate da punti e virgola (;) che sono valutate e utilizzate come valori per i parametri dinamici nell'istruzione della query.

Tipo di dati riportato 

Testo

Creata nella versione 

12.0

Descrizione 

EseguiSQL consente di eseguire istruzioni SQL SELECT con parametri dinamici per eseguire in modo sicuro query sui database FileMaker Pro ed evitare pericoli per la sicurezza causati da attacchi Injection.

EseguiSQL non riconosce le relazioni create in FileMaker Pro, consentendo di definire con flessibilità le relazioni nelle istruzioni SQL e di recuperare i dati da qualsiasi tabella, indipendentemente dal contesto del formato.

EseguiSQL non può essere utilizzata con le istruzioni SQL che modificano dati o schemi del database (come i comandi Inserisci in o Elimina tabella).

Se si utilizzano più parametri dinamici in querySQL, il primo punto interrogativo viene sostituito dal primo parametro argomenti, il secondo dal secondo, e così via.

Se si verifica un errore durante l'analisi o l'esecuzione della query, EseguiSQL restituisce ?. Per ricevere un messaggio di errore più dettagliato, utilizzare la funzione EseguiSQLe.

Note 

  • Per applicare la formattazione corretta alle date di una query SQL, utilizzare l'istruzione DATA. Se non si utilizza l'istruzione DATA, EseguiSQL gestisce le date come stringhe di testo.
  • FileMaker Pro restituisce la data, l'ora e i numeri in formato Unicode/SQL, non nel formato locale del sistema operativo o del file.
  • EseguiSQL accetta soltanto la sintassi SQL-92 con data e ora in formato ISO, senza parentesi. EseguiSQL non accetta le costanti di data, ora e indicatore data e ora in formato ODBC/JDBC tra parentesi.
  • FileMaker SQL utilizza il criterio di ordinamento binario Unicode, diverso da quello di FileMaker Pro utilizzato con l'ordinamento in base alla lingua o con il criterio di ordinamento predefinito indipendente dalla lingua.
  • Per ulteriori informazioni su sintassi dell'istruzione SELECT, istruzioni SQL supportate, espressioni e funzioni di catalogo, vedere la Guida ODBC e JDBC di FileMaker e la Guida SQL di FileMaker.
  • La funzione EseguiSQL utilizza istruzioni SQL SELECT per eseguire query su tabelle in origini dati FileMaker, non ODBC. Per eseguire istruzioni SELECT e altre istruzioni SQL supportate su origini dati ODBC, utilizzare l'istruzione di script Esegui SQL.

Esempio 1 

Si supponga un database che contiene due tabelle, Dipendenti e Stipendi, messi in relazione per mezzo del campo IDDip.

Elenco dei dipendenti e degli stipendi

Nota  I campi Dipendenti::IDDip, Stipendi::IDDip e Stipendi::Stipendio sono campi Numero.

È possibile utilizzare la funzione EseguiSQL per restituire un valore del campo da un record specifico senza cambiare il record corrente o modificare il gruppo trovato.

EseguiSQL ( "SELECT Reparto FROM Dipendenti WHERE IDDip = 1" ; "" ; "" ) restituisce Sviluppo indipendentemente dal record, gruppo trovato o formato corrente.

Esempio 2 

Dall'Esempio 1, si supponga di voler aggiungere un campo alla tabella Dipendenti che mostri la percentuale dello stipendio di un dipendente rispetto al totale degli stipendi di un reparto. Sebbene sia possibile utilizzare un calcolo in FileMaker Pro per generare questo valore, è anche possibile utilizzare la funzione EseguiSQL per specificare questa query utilizzando parametri dinamici. L'esempio di seguito utilizza alias di tabella per la tabella Dipendenti (E) e la tabella Stipendi (S) per specificare i campi (S.Stipendio, E.IDDip e S.IDDip).

Si definisce un campo Calcolo (Percentuale stipendi reparto) nella tabella Dipendenti, quindi si utilizza la funzione EseguiSQL per specificare un'istruzione di query nel seguente calcolo:

Copia
Arrotonda ( 
   100 * Stipendi::Stipendio / EseguiSQL ( 
      "SELECT SUM (S.Stipendio) 
      FROM Dipendenti E 
      JOIN Stipendi S 
      ON E.IDDip = S.IDDip 
      WHERE E.Reparto = ?"; 
      ""; ""; Dipendenti::Reparto 
   ) ; 
2 )

Nota  Poiché questo calcolo serve a ricavare lo stipendio del dipendente dalla tabella Stipendi (Stipendi::Stipendio), è necessario creare una relazione tra i campi Dipendenti::IDDip e Stipendi::IDDip nel grafico delle relazioni (vedere Creazione e modifica delle relazioni). Al contrario, la funzione EseguiSQL non utilizza il grafico delle relazioni. Quindi, in questo esempio, la clausola JOIN stabilisce la relazione utilizzata dall'istruzione SELECT in EseguiSQL.

Per ogni record dipendente, il campo Percentuale stipendi reparto calcola la percentuale dello stipendio del dipendente rispetto alla somma degli stipendi del reparto del dipendente.

Dipendenti
IDDip Cognome Reparto Percentuale stipendi reparto
1 Smith Sviluppo 52.97
2 Ogawa Sviluppo 47.03
3 Durand Qualità 48.86
4 Garcia Qualità 51.14
5 Mehmet Documentazione 100
6 Ferrini Marketing 100