web-dev-qa-db-ja.com

MySQL CREATE FUNCTION構文

私はMySQLで関数を作成しようとしています:

SQLコードは次のとおりです。

CREATE FUNCTION F_Dist3D (x1 decimal, y1 decimal) 
RETURNS decimal
DETERMINISTIC
BEGIN 
 DECLARE dist decimal;
 SET dist = SQRT(x1 - y1);
 RETURN dist;
END;

次のエラーが表示されます。

#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 10

PhpMyAdminでこのcreateステートメントを実行しています。この機能の何が問題になっていますか?

41
Mel

この種のエラーを回避するには、;区切り文字を$$のようなものでオーバーライドする必要があります。

関数定義の後、区切り文字を;に戻すことができます。

これは動作するはずです:

DELIMITER $$
CREATE FUNCTION F_Dist3D (x1 decimal, y1 decimal) 
RETURNS decimal
DETERMINISTIC
BEGIN 
  DECLARE dist decimal;
  SET dist = SQRT(x1 - y1);
  RETURN dist;
END$$
DELIMITER ;
73
james_bond

MySQL create関数の構文:

DELIMITER //

CREATE FUNCTION GETFULLNAME(fname CHAR(250),lname CHAR(250))
    RETURNS CHAR(250)
    BEGIN
        DECLARE fullname CHAR(250);
        SET fullname=CONCAT(fname,' ',lname);
        RETURN fullname;
    END //

DELIMITER ;

クエリでこの関数を使用する

SELECT a.*,GETFULLNAME(a.fname,a.lname) FROM namedbtbl as a


SELECT GETFULLNAME("Biswarup","Adhikari") as myname;

このビデオでmysql関数の作成方法とクエリでの使用方法をご覧ください

Mysql関数の作成ビデオチュートリアル

21