Question

Dans mon stored fonction je:

formula := "(10+10 * 1000)/12";

(une formule mathématique simple, avec uniquement des chiffres, créés dynamiquement sous forme de chaîne)

Comment puis-je Eval cela, et retourner le résultat?

Je ne peux pas utiliser execute (pas possible à l'intérieur d'une fonction stockée) et si je fais une procédure stockée et appelle à partir d'une fonction stockée, je reçois « SQL dynamique n'est pas autorisé en fonction stockée ou déclencheur » -comme si J'aurais le eval directement à l'intérieur de la fonction. J'ai besoin d'une fonction stockée, et non une procédure, parce que je dois l'appeler dans une instruction SELECT.

Était-ce utile?

La solution 2

Apparemment, il n'y a pas de solution à cela. J'ai appliqué une solution de contournement « de paintfull » en PHP, que je ne vais pas afficher ici car il ne fait l'objet de la question.

Autres conseils

Je ne vois pas ce que l'aide de la formule qui vous achète. Si vous écrivez une procédure stockée, tapez dans la formule et d'oublier la chaîne.

Je ne pense pas qu'il est dans votre intérêt de faire de la procédure stockée que dynamique où la formule en cours d'évaluation doit être changer d'un appel à.

Si vous devez, vous devrez écrire un analyseur pour briser cette chaîne en ses parties constitutives, créer un arbre d'analyse syntaxique, puis marcher l'arbre pour l'évaluer. Ce n'est pas un problème trivial. Je repense cela.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top