2011-07-19 13 views
29

をCREATE:ここMySQLは、私は、MySQLで関数を作成しようとしていますFUNCTION構文

は、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文を実行します。この機能で何が問題になっていますか?

答えて

54

この種のエラーを避けるには、のようなもので;区切り文字を上書きする必要があります。

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

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

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 ; 
+0

これを実行しました。私は、phpMyAdminを使って区切り文字のハックを除去すると思った。ありがとう! – Mel

+0

例 mysql.user FROM 'DELIMITER $$' ' 手順mysql_user_countを作成する()' ' BEGIN'' SELECT 'MySQLユーザーテーブル' の説明、COUNT(*)RECORD_COUNT; '' END $$ '' DELIMITER ; ' –

+2

うんPHPMyAdminはとても素晴らしいです。関数/プロシージャで作業する場合、HeidiSQLを使用することをお勧めします。 –

13

のMySQL関数の構文を作成します。

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関数を作成するには、どのようにこのビデオをあなたの質問に使用する方法と

Create Mysql Function Video Tutorial

+0

+1 Biswarup、素晴らしい動画があるようです。私はあなたからたくさんのことを学ぶ気がします。ビデオをきれいにしてくれてありがとう。 – Johnny

+0

あなたの貴重なご意見に感謝@ジョニー。 – biswarupadhikari

関連する問題