ExecuteSQL
Användning
Utför ett SQL-frågeuttryck för den angivna tabellförekomsten i en FileMaker Pro-fil.
Format
ExecuteSQL (sqlfråga ; fältavgränsare ; radavgränsare {; argument... })
Parametrar
sqlfråga – ett SQL SELECT-uttryck. Uttrycket kan innehålla en Union-instruktion som kombinerar resultatet av två frågor. Uttrycket kan innehålla programmässigt genererat SQL (dynamiska parametrar) som anger var valfria argument ska användas i frågan. Ange en dynamisk parameter genom att använda frågetecken (?).
fältavgränsare – teckensträng som används som avgränsare mellan fält i ett resultat. Om en tom sträng anges är avgränsaren ett kommatecken. Fältavgränsaren visas inte efter det sista fältet i resultatet.
radavgränsare – teckensträng som används som avgränsare mellan poster i ett resultat. Om en tom sträng anges är avgränsaren ett returtecken. Radavgränsaren visas inte efter den sista raden i resultatet.
argument – ett eller flera
uttryck som utvärderas och används som värden för de dynamiska parametrarna i frågeuttrycket.
Returnerad datatyp
text
Kommer från
FileMaker Pro 12.0
Beskrivning
Med ExecuteSQL kan du köra SQL SELECT-uttryck som innehåller dynamiska parametrar för att säkert ställa frågor i FileMaker Pro-databaser och på så sätt undvika säkerhetsbrister genom injektionsattacker.
ExecuteSQL identifierar inte relationer som skapats i FileMaker Pro, vilket ger dig flexibiliteten att definiera relationer i SQL-uttryck och hämta data från vilken tabell som helst, oberoende av layoutkontexten.
ExecuteSQL kan inte användas med SQL-uttryck som ändrar data eller databasschemat (exempelvis kommandona för att infoga i eller radera tabell).
Om ett fel uppstår under frågetolkningen eller -utförandet returneras ? i FileMaker Pro.
Kommentar
•Du kan tillämpa korrekt formatering för datum i ett SQL-uttryck genom att använda DATE-uttrycket. Om du inte använder DATE-uttrycket behandlas datum som ordagranna strängar av ExecuteSQL.
•I FileMaker Pro returneras datum-, tids- och sifferdata i Unicode-/SQL-format, inte i operativsystemets eller filens lokala format.
•ExecuteSQL godkänner endast SQL-92 syntaxens ISO-datum- och tidformat utan klammerparenteser. ExecuteSQL godkänner inte datum-, tids- och tidsstämpelkonstanter i ODBC/JDBC-format inom klammerparenteser
•FileMaker SQL använder en Unicode-binär sorteringsordning, vilken skiljer sig från sorteringsordningen i FileMaker Pro som används med språksortering eller med en språkneutral standardsorteringsordning.
Exempel 1
Anta att en databas innehåller två tabeller, Anställda och Löner, som är relaterade genom fältet AnstID.
Obs! Fälten Anställda::AnstID, Löner::AnstID och Löner::Lön är numeriska fält.
Du kan använda funktionen ExecuteSQL om du vill returnera ett fältvärde från en specifik post utan att byta aktuell post eller ändra de hittade posterna.
ExecuteSQL ("SELECT Avdelning FROM Anställda WHERE AnstID = 1") returnerar Development oavsett aktuell post, hittade poster eller layout.
Exempel 2
Anta att du vill lägga till ett fält i tabellen Anställda som visar procentandelen av en medarbetares lön i förhållande till avdelningens totala summa för löner. Du skulle kunna använda en beräkning i FileMaker Pro och generera värdet, men du kan även använda funktionen ExecuteSQL om du vill specificera frågan med dynamiska parametrar. Exemplet nedan använder tabellalias för tabellen Anställda (A) och Löner (L) när fält anges (L.Lön, A.AnstID och L.AnstID).
Definiera ett beräkningsfält i tabellen Anställda och använd sedan funktionen ExecuteSQL till att specificera följande frågeuttryck:
Round (
100 * Löner::Lön / ExecuteSQL (
"SELECT SUM (L.Lön)
FROM Anställda A
JOIN Löner S
ON A.AnstID = L.AnstID
WHERE A.Avdelning = ?" ;
"" ; "" ; Anställda::Avdelning
) ;
2)
På varje post för en anställd, visar beräkningsfältet procentandelen av den anställdas lön i förhållande till den totala summan för löner i den anställdas avdelning. Till exempel, posten med efternamn "Svensson" returnerar 52,97 och posten med efternamn "Mehmet" returnerar 100.
Relaterade avsnitt