3

ストアド関数の中には:

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

(数値のみを使用し、文字列として動的に作成される単純な数式)

これを評価して結果を返すにはどうすればよいですか?

EXECUTEを使用できません(ストアド関数内では使用できません)。ストアドプロシージャにしてストアド関数から呼び出すと、「動的SQLはストアド関数またはトリガーで許可されていません」というメッセージが表示されます。関数内の直接の評価。SELECTステートメント内で呼び出す必要があるため、プロシージャではなくストアド関数が必要です。

4

2 に答える 2

0

式を使用することで何が得られるのかわかりません。ストアド プロシージャを作成している場合は、数式を入力し、文字列は忘れてください。

評価される数式が呼び出しごとに変化しなければならない場所で、ストアド プロシージャを動的にすることはあなたの利益にはならないと思います。

必要に応じて、パーサーを作成してその文字列を構成部分に分割し、解析ツリーを作成してから、ツリーをたどって評価する必要があります。それは些細な問題ではありません。私はこれを再考します。

于 2011-09-07T10:31:13.280 に答える