1

私は2次関数を1つ作成しようとしています:

CREATE FUNCTION delta (a INT, b INT, c INT)
RETURNS DECIMAL(10,5) DETERMINISTIC
RETURN POWER(b,2) - 4*a*c;

CREATE FUNCTION raiz1 (a INT, b INT, c INT)
RETURNS DECIMAL(10,5) DETERMINISTIC
RETURN (-b - sqrt(delta)/2*a), (-b + sqrt(delta)/2*a); 

しかし、私はこのエラーが発生します

どうすれば修正できますか?このために1つの機能を実行するにはどうすればよいですか?

ありがとう

4

1 に答える 1

1

MySQL で複数の値を返す唯一の方法は、ストアド プロシージャを使用することです。ただし、ストアド プロシージャは SQL ステートメント内で使用できないため、おそらく期待どおりの結果が得られません。

delta引数を渡していないため、2 番目の関数 for の構文が正しくありません。

返す値を指定して、4 番目の引数を取る関数を作成できます。raiz1()元の構文を使用する ( wheredeltaが正しく呼び出されない):

CREATE FUNCTION raiz1 (a INT, b INT, c INT, isfirst int)
RETURNS DECIMAL(10,5) DETERMINISTIC
RETURN (case when isfirst = 0 then (-b - sqrt(delta)/2*a) else (-b + sqrt(delta)/2*a) end);

次に、次のように関数を呼び出します。

select raiz1(1, 2, 3, 0) as Root1, raiz1(1, 2, 3, 1) as Root2
于 2013-05-06T21:32:49.427 に答える