ExecuterSQL
Exécute une instruction de requête SQL pour l'occurrence de table spécifiée dans un fichier FileMaker Pro.
Format
ExecuterSQL ( RequêteSQL ; séparateurRubrique ; séparateurLigne { ; arguments... } )
Paramètres
RequêteSQL
: instruction SQL SELECT. L'instruction peut inclure une clause Union associant les résultats de deux requêtes. L'instruction peut contenir des éléments SQL générés par programmation (paramètres dynamiques) indiquant où les arguments facultatifs doivent être utilisés dans la requête. Utilisez le point d'interrogation (?) pour indiquer un paramètre dynamique.
séparateurRubrique
: chaîne de caractères utilisée en tant que séparateur entre les rubriques du résultat. Si une chaîne vide est indiquée, le séparateur est une virgule. Le séparateur de rubrique n'est pas affiché après la dernière rubrique du résultat.
séparateurLigne
: chaîne de caractères utilisée en tant que séparateur entre les enregistrements du résultat. Si une chaîne vide est indiquée, le séparateur est un retour chariot. Le séparateur de ligne n'est pas affiché après la dernière ligne du résultat.
arguments
: une ou plusieurs expressions séparées par des points-virgules (;), évaluées et utilisées en tant que valeurs pour les paramètres dynamiques de l'instruction de requête.
Résultat
Texte
Provient de la version
12.0
Description
ExecuterSQL vous permet d'exécuter des instructions SQL SELECT contenant des paramètres dynamiques afin d'interroger en toute sécurité des bases de données FileMaker Pro d'éviter les vulnérabilités de sécurité par l'introduction d'attaques.
ExecuterSQL ne reconnaît pas les liens créés dans FileMaker Pro, ce qui vous offre la flexibilité de définir des liens dans les instructions SQL et de récupérer les données de n'importe quelle table, indépendamment du contexte du modèle.
ExecuterSQL ne peut pas être utilisé avec des instructions SQL qui modifient des données ou le schéma de la base de données (par exemple les commandes Insérer dans ou Supprimer table).
Lorsque vous utilisez plusieurs paramètres dynamiques dans la RequêteSQL
, le premier point d'interrogation est remplacé par le premier paramètre arguments
, le second par le second paramètre, etc.
En cas d'erreur pendant l'analyse ou l'exécution, ExecuterSQL renvoie ?. Pour recevoir un message d'erreur plus détaillé, utilisez la fonction ExecuterSQLe.
Remarques
- Pour que les dates aient le format approprié dans une requête SQL, utilisez l'instruction DATE. Sans cette instruction, ExecuterSQL traite les dates comme des chaînes littérales.
- FileMaker Pro renvoie les données de date, d'heure et de nombre au format Unicode/SQL et non pas conformément aux paramètres régionaux du système d'exploitation ou du fichier.
- ExecuterSQL accepte uniquement également les formats de date et d'heure ISO syntaxe SQL-92 sans accolades. ExecuterSQL n'accepte pas les constantes de date, d'heure et d'horodatage au format ODBC/JDBC entre accolades.
- FileMaker SQL utilise l'ordre de tri binaire Unicode, qui est différent de l'ordre de tri FileMaker Pro avec le tri d'après la langue ou de l'ordre de tri indépendant de la langue par défaut.
- Pour plus d'informations sur la syntaxe de l'instruction SELECT, les instructions, expressions et fonctions de catalogue SQL prises en charge, consultez le Guide ODBC et JDBC FileMaker et le Guide de référence SQL FileMaker.
- La fonction ExecuterSQL utilise les instructions SQL SELECT pour interroger des tables dans des sources de données FileMaker, et non des sources de données ODBC. Pour exécuter les instructions SELECT et d'autres instructions SQL prises en charge sur des sources de données ODBC, utilisez l'action de script Exécuter SQL.
Exemple 1
Supposons qu'une base de données contient deux tables, Employés et Salaires, liées par la rubrique IDEmployés.
Remarque Les rubriques Employés::IDEmployés, Salaires::IDEmployés et Salaires::Salaire sont des rubriques Nombre.
Vous pouvez utiliser la fonction ExecuterSQL pour renvoyer une valeur de rubrique depuis un enregistrement spécifique sans modifier l'enregistrement actif, ni le jeu d'enregistrements trouvés.
ExecuterSQL ( "SELECT Service FROM Employés WHERE IDEmployés = 1"; ""; "" )
renvoie Développement, quels que soient l'enregistrement actif, le jeu d'enregistrements trouvés ou le modèle.
Exemple 2
Pour l'exemple 1, supposez que vous souhaitez ajouter une rubrique à la table Employés pour afficher le pourcentage du salaire d'un employé par rapport au total des salaires d'un service. Même si vous pouvez utiliser un calcul dans FileMaker Pro pour générer cette valeur, vous pouvez utiliser la fonction ExecuterSQL pour définir cette requête à l'aide de paramètres dynamiques. L'exemple ci-dessous utilise les alias de table pour la table Employés (E
) et la table Salaire (S
) au moment de spécifier les rubriques (S.Salaire
, E.IDEmployés
et S.IDEmployés
).
Définissez une rubrique Calcul (Salaires du service en pourcentage) dans la table Employés, puis utilisez la fonction ExecuterSQL pour spécifier une instruction de requête dans le calcul suivant :
Arrondi (
100 * Salaires::Salaire / ExecuterSQL (
"SELECT SUM (S.Salaire)
FROM Employés E
JOIN Salaires S
ON E.IDEmployés = S.IDEmployés
WHERE E.Service = ?";
""; ""; Employés::Service
) ;
2 )
Remarque Étant donné que ce calcul doit obtenir le salaire de l'employé à partir du tableau Salaires (Salaires::Salaire), vous devez créer une relation entre les rubriques Employés::IDEmployés et Salaires::IDEmployés dans le graphe de liens (consultez la section Création et modification de rubriques). En revanche, la fonction ExecuterSQL n'utilise pas le graphe de liens. Ainsi, dans cet exemple, la clause JOIN établit la relation utilisée par l'instruction SELECT dans ExecuterSQL.
Pour chaque enregistrement d'employé, la rubrique Salaires du service en pourcentage calcule le pourcentage du salaire de l'employé par rapport à la somme des salaires du service de l'employé.
Employés | |||
---|---|---|---|
IDEmployés | Nom | Service | Salaires du service en pourcentage |
1 | Martin | Développement | 52,97 |
2 | Ogawa | Développement | 47,03 |
3 | Durand | Qualité | 48,86 |
4 | Garcia | Qualité | 51,14 |
5 | Mehmet | Documentation | 100 |
6 | Ferrini | Marketing | 100 |