0

phpMyAdminhttp ://www.databasejournal.com/features/mysql/article.php/3569846/MySQL-Stored-Functions.htmを介してこの例を試しました

mysql> DELIMITER |
mysql>
 CREATE FUNCTION WEIGHTED_AVERAGE (n1 INT, n2 INT, n3 INT, n4 INT)
  RETURNS INT
   DETERMINISTIC
    BEGIN
     DECLARE avg INT;
     SET avg = (n1+n2+n3*2+n4*4)/8;
     RETURN avg;
    END|

これはうまくいきました

DELIMITER |

次のステートメントは次のようになりました。

Error

SQL query:

CREATE FUNCTION WEIGHTED_AVERAGE(
n1 INT,
n2 INT,
n3 INT,
n4 INT
) RETURNS INT DETERMINISTIC BEGIN DECLARE avg INT;

MySQL said: Documentation
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 5 
4

1 に答える 1

0

リンクで言及されているように:

As mentioned in the first stored procedures tutorial, we declare the "|" symbol as a delimiter, so that our function body can use ordinary ";" characters

連続する異なる行に多くのコマンドを書くことができます。しかし、通常は ' ;の場合のみです。' を満たすと、hole ステートメントが実行されます。
DELIMITER 文字を入れることは、' ;を使用するかどうかに関係なく、MySQL がこれが閉じられるまで待機する必要があることを意味します。' またはそうでない場合にのみ、区切り記号の間にあるものを解釈します。

于 2010-09-30T14:08:14.860 に答える