J'ai une application qui permet à l'utilisateur d'entrer une chaîne SQL avec un espace réservé pour certaines valeurs produites par mon application. L'application va remplacer les espaces réservés par des valeurs et exécuter la chaîne SQL à travers différents backends de base de données.Exécution d'une procédure stockée sur ODBC
Pour le backend ODBC, j'appelle SQLExecDirect() sur le SQL Strin qui fonctionne bien sur les requêtes régulières, mais échoue pour les procédures stockées avec des paramètres.
Existe-t-il un moyen simple d'étendre ce mécanisme pour prendre en charge les procédures stockées? D'une certaine manière comment le SQL doit être écrit? La seule chose à laquelle je peux penser en ce moment est de commencer à analyser la chaîne SQL et d'appeler n fois SQLBindParameter() si elle conatains un "appel". Mais l'analyse de SQL est délicate.
Des idées?
exemple de travail SQL: SELECT COLUMNA de foo où ColumnB = 'espace réservé%'
SQL non-travail: CALL StoredFoo ('espace réservé%')
Sons comme une application terribles .. aucune infraction .. Je recommande la création d'une interface spécifique pour les procédures stockées, si cela est nécessaire fonctionnalité. Comment faites-vous confiance à vos utilisateurs pour écrire de bonnes requêtes non-destructives? – Fosco
L'application est installée sur le PC de l'utilisateur et dans le cadre du processus de configuration, il peut mettre les instructions SQL où enregistrer les valeurs dans son fichier de configuration. Il n'y a donc pas de problème de sécurité à part qu'il peut accidentellement écraser ses propres données. –