Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

TFDQuery.Prepare ne peut pas déterminer les types de paramètres pour la requête INSERT sur MS SQL SERVER

Je suivrais l'aide ici et éviterais d'appeler Prepare avant que les paramètres ne soient définis (leurs types de données sont entièrement spécifiés). Vous n'avez rien manqué d'autre que cette note de l'aide :

Pour les pilotes ODBC courants (vous parlez toujours à un pilote ODBC, qu'il utilise ou non OLE DB en interne pour communiquer avec le SGBD), FireDAC ne détermine pas les types de données de paramètre pour la commande préparée. Au lieu de cela, il prépare une instruction de commande sur le SGBD cible et essaie de lier celles existantes à partir du Params le recueil. C'est ainsi que Préparer méthode est implémentée (Tokyo).

L'API ODBC fournit le SQLDescribeParam pour obtenir les détails des paramètres de la commande préparée, mais FireDAC ne l'utilise nulle part (pour le moment). Au lieu de cela, il quitte manuellement la collecte des paramètres de construction. Ce qui n'est pas faux, car au final, c'est le développeur qui a besoin de savoir quelle valeur attribuer à tel paramètre de commande pour connaître ce type de valeur.