web-dev-qa-db-ja.com

クエリから値を返すMySQL関数

クエリを使用して値を計算する関数を作成したいのですが、値を返すときに問題が発生します。

短縮して、私のクエリは:

CREATE FUNCTION func01(value1 INT , monto DECIMAL (10,2)) RETURNS DECIMAL(10,2)
BEGIN
SET @var_name = 0;
select @var_name=if(value1 = 1,monto * table.divisa_dolar,table.monto *divisa_euro) from table where data_init = 1;
return @var_nam;
END

SQL構文エラーが発生します。

SQLエラー(1064):SQL構文にエラーがあります。

15
Cesar

これらがすべて総称名であるとすると(テーブルは適切なテーブル名ではありません)、問題は==を比較に使用できないことです。また、いくつかの主要な構文(DECLARE、SELECT INTOなど)が欠落しています。

これに変更:

CREATE FUNCTION func01(value1 INT , monto DECIMAL (10,2))
RETURNS DECIMAL(10,2)
DETERMINISTIC
BEGIN
  DECLARE var_name DECIMAL(10,2);
  SET var_name = 0;
  SELECT if(value1 = 1,monto *divisa_dolar,monto *divisa_euro) INTO var_name
    FROM table
    WHERE data_init = 1;
  RETURN var_name;
END

MySQL比較関数と演算子

関連質問: MYSQLの単一の等号

関数ヘルプ: http://www.databasejournal.com/features/mysql/article.php/3569846/MySQL-Stored-Functions.htm

25
theChrisKent