Verwijzingen > Naslaggegevens voor functies > Logische functies > ExecuteSQL
 

ExecuteSQL

Voert een SQL-opvraaginstructie uit voor de opgegeven tabelvermelding in een FileMaker Pro Advanced-bestand.

Opmaak 

ExecuteSQL (sqlQuery ; veldscheidingsteken ; rijscheidingsteken { ; argumenten... })

Parameters 

sqlQuery - een SQL-instructie SELECT. De instructie kan een element Union bevatten dat de resultaten van twee opvragen combineert. De instructie kan programmamatig gegenereerde SQL (dynamische parameters) bevatten die aangeven waar optionele argumenten moeten worden gebruikt in de opvraag. Gebruik het vraagteken (?)om een dynamische parameter aan te geven.

veldscheidingsteken - de tekenreeks die in het resultaat als een scheiding tussen velden wordt gebruikt. Als er een lege reeks is opgegeven, is het scheidingsteken een komma. Het veldscheidingsteken wordt niet weergegeven na het laatste veld in het resultaat.

rijscheidingsteken - de tekenreeks die in het resultaat als een scheiding tussen records wordt gebruikt. Als er een lege reeks is opgegeven, is het scheidingsteken een Return. Het rijscheidingsteken wordt niet weergegeven na de laatste rij in het resultaat.

argumenten - een of meer uitdrukkingen die worden gescheiden door puntkomma's (;) en die worden geëvalueerd en worden gebruikt als waarden voor de dynamische parameters in de opvraaginstructie.

Resulterend gegevenstype 

tekst

Afkomstig van 

FileMaker Pro 12.0

Beschrijving 

Met ExecuteSQL kunt u SELECT-instructies van SQL met dynamische parameters uitvoeren om veilig opvraagacties op FileMaker Pro Advanced-databases uit te voeren om kwetsbaarheden in de beveiliging door injectieaanvallen te voorkomen.

ExecuteSQL herkent geen relaties die in FileMaker Pro Advanced zijn gemaakt. Hierdoor kunt u relaties in SQL-instructies flexibeler definiëren en gegevens van elke tabel ophalen, ongeacht de lay-outcontext.

ExecuteSQL kan niet worden gebruikt met SQL-instructies die gegevens of het databaseschema wijzigen (zoals de opdrachten Insert Into of Delete Table).

Wanneer u meerdere dynamische parameters gebruikt in sqlQuery, wordt het eerste vraagteken vervangen door de eerste parameter van argumenten, wordt het tweede vraagteken vervangen door de tweede parameter, enzovoort.

Als er een fout optreedt tijdens parsering of uitvoering van een opvraag, geeft FileMaker Pro Advanced als resultaat ?.

Opmerkingen 

Als u de juiste opmaak wilt toepassen op data in een SQL-opvraag, gebruikt u de instructie DATE. Als u de instructie DATE niet gebruikt, beschouwt ExecuteSQL data als letterlijke tekenreeksen.

FileMaker Pro Advanced geeft als resultaat datum-, tijd- en getalgegevens in Unicode-/SQL-opmaak, niet in de landinstellingen van het besturingssysteem of het bestand.

ExecuteSQL accepteert alleen ISO-datum- en tijdopmaak van de syntaxis SQL-92 zonder accolades. ExecuteSQL accepteert geen ODBC/JDBC-opmaak voor data, tijden en tijdstempelconstanten tussen accolades.

FileMaker SQL gebruikt de Unicode binaire sorteervolgorde die verschilt van de FileMaker Pro Advanced-sorteervolgorde die wordt gebruikt bij het sorteren van talen of bij de standaard taalonafhankelijke sorteervolgorde.

Als u meer informatie wenst over de syntaxis van de instructie SELECT, ondersteunde SQL-instructies, uitdrukkingen en catalogusfuncties raadpleegt u de FileMaker Handleiding voor ODBC en JDBC en de FileMaker-naslaggegevens voor SQL.

De ExecuteSQL-functie gebruikt SELECT-instructies van SQL om tabellen in FileMaker-gegevensbronnen op te vragen, en geen ODBC-gegevensbronnen. Om SELECT- en andere ondersteunde SQL-instructies uit te voeren met ODBC-gegevensbronnen, gebruikt u de SQL uitvoeren scriptstap.

Voorbeeld 1 

Stel dat een database twee tabellen bevat, Werknemers en Salarissen, die via het veld WrkID zijn verbonden.

Lijst met werknemers en salarissen

Opmerking  De velden Werknemers::WrkID, Salarissen::WrkID en Salarissen::Salaris zijn getalvelden.

U kunt de functie ExecuteSQL gebruiken om een veldwaarde uit een specifiek record als resultaat te geven zonder de huidige record te wijzigen of de gevonden reeks aan te passen.

ExecuteSQL ("SELECT Afdeling FROM Werknemers WHERE WrkID = 1") geeft als resultaat Ontwikkeling ongeacht de huidige record, de gevonden reeks of de lay-out.

Voorbeeld 2 

Veronderstel dat u aan de tabel Werknemers een veld wilt toevoegen waarin het percentage van het salaris van een werknemer ten opzichte van het totaal van de salarissen op een afdeling moet worden weergegeven. Hoewel u een berekening in FileMaker Pro Advanced kunt gebruiken om deze waarde te genereren, kunt u ook de ExecuteSQL-functie gebruiken om deze opvraag te definiëren met dynamische parameters. In het onderstaande voorbeeld worden tabelaliassen gebruikt voor de tabel Werknemers (E) en de tabel Salarissen (S) bij het opgeven van de velden (S.Salaris, E.WrkID en S.WrkID).

Definieer een berekeningveld in de tabel Werknemers en geef met de functie ExecuteSQL de volgende opvraaginstructie op:

Round (
   100 * Salarissen::Salaris / ExecuteSQL (
      "SELECT SUM (S.Salaris)
      FROM Werknemers E
      JOIN Salarissen S
      ON E.WrkID = S.WrkID
      WHERE E.Afdeling = ?";
      ""; ""; Werknemers::Afdeling
   ) ;
2)

In de records van de werknemers geeft het berekeningveld het percentage van het salaris van de werknemer ten opzichte van de som van de salarissen voor de afdeling van de werknemer weer. Bijvoorbeeld: de record met de achternaam "Smit" geeft als resultaat 52,97 en de record met de achternaam "Mehmet" geeft als resultaat 100.

Verwante onderwerpen 

Naslaggegevens voor functies (lijst met categorieën)

Naslaggegevens voor functies (alfabetisch overzicht)

Formules

Functies

Berekeningvelden definiëren

Operatoren gebruiken in formules