2013-07-13 33 views
0

的代碼我的存儲過程是存儲過程:難度以書面形式MYSQL

CREATE PROCEDURE insert_sait_inf(IN name TEXT,IN title TEXT,IN link TEXT) 

BEGIN 

INSERT INTO sait_inf(sait_name,sait_title,sait_link) VALUES (name,title,link); 

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 3 

回答

0

由於Defining Stored Programs下記載:

  • 如果您使用mysql客戶端程序來解除罰款包含分號字符的存儲程序,則會出現問題。默認情況下,mysql本身將分號識別爲語句分隔符,因此您必須臨時重新定義分隔符以使mysql將整個存儲的程序定義傳遞給服務器。

    phpMyAdmin也是如此。

  • 要重新定義mysql分隔符,請使用delimiter命令。

    並非所有版本的phpMyAdmin都能識別delimiter命令;相反,一個可以使用SQL輸入框下面的Delimiter輸入框:見How do I write an SP in phpMyAdmin (MySQL)?

  • 以下是需要一個參數,使用SQL函數進行操作,並返回結果的功能的一個例子。在這種情況下,不需要使用delimiter因爲函數定義不包含內部;聲明分隔符:

     
    mysql> CREATE FUNCTION hello (s CHAR(20)) 
    mysql> RETURNS CHAR(50) DETERMINISTIC 
        -> RETURN CONCAT('Hello, ',s,'!'); 
    Query OK, 0 rows affected (0.00 sec) 
    

    在你的情況,你可以刪除BEGIN ... END複合語句塊,避免了需要改變的分隔符。

+0

如果BEGIN ... END命令刪除了以後的php,當兩個或更多SP SP調用只有第一個作品 –