2012-02-28 34 views
5

我想在sql文件裏面設置分隔符(因爲我不能依靠用戶通過終端來做到這一點)。在sql文件裏面設置MySQL分隔符

是否有一個mysql語句,可以讓我設置分隔符?

使用

DELIMITER // 

拋出一個錯誤。

# Categories schema 

# --- !Ups 


CREATE TABLE IF NOT EXISTS `category` (
    `id` INT NOT NULL AUTO_INCREMENT , 
    `pid` INT NULL DEFAULT 0 , 
    `label` VARCHAR(64) NULL , 
    `active` TINYINT NULL DEFAULT 0, 
    PRIMARY KEY (`id`)); 

DELIMITER // 

CREATE FUNCTION hierarchy_connect_by_parent_eq_prior_id(value INT) RETURNS INT 
NOT DETERMINISTIC 
READS SQL DATA 
BEGIN 
     DECLARE _id INT; 
     DECLARE _parent INT; 
     DECLARE _next INT; 
     DECLARE CONTINUE HANDLER FOR NOT FOUND SET @id = NULL; 

     SET _parent = @id; 
     SET _id = -1; 

     IF @id IS NULL THEN 
       RETURN NULL; 
     END IF; 

     LOOP 
       SELECT MIN(id) 
       INTO @id 
       FROM category 
       WHERE pid = _parent 
         AND id > _id; 
       IF @id IS NOT NULL OR _parent = @start_with THEN 
         SET @level = @level + 1; 
         RETURN @id; 
       END IF; 
       SET @level := @level - 1; 
       SELECT id, pid 
       INTO _id, _parent 
       FROM category 
       WHERE id = _parent; 
     END LOOP; 
END// 

DELIMITER ; 

# --- !Downs 

#DROP TABLE category; 

We got the following error: 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 'DELIMITER/CREATE FUNCTION hierarchy_connect_by_parent_eq_prior_id(value INT) ' at line 1 [ERROR:1064, SQLSTATE:42000], while trying to run this SQL script:

+1

sql文件裏的設置分隔符是什麼意思?你能更清楚嗎?你想做什麼? – 2012-02-28 08:56:15

+0

你能粘貼錯誤嗎? – Gianluca 2012-02-28 09:13:56

+0

該錯誤是相當無用的。這是一個1064. – 2012-02-28 09:23:30

回答

0

你說你正在使用

DELIMITER // 

但你的腳本說

DELIMITER # 

如果這就是你使用的是什麼,它可能只是該#是評論語法? http://dev.mysql.com/doc/refman/5.1/en/comments.html

所以你可能只是沒有設置任何DELIMITER,所以下一個關鍵字是意外的。

(好吧,這是你的編輯之前的情況:))。

+0

使用#作爲分隔符沒有任何錯誤。我檢查了它。 – Mchl 2012-02-28 10:12:30

+0

我都試過;)都沒有工作。 – 2012-02-28 10:24:10

0

在MySQL的版本我用用分隔符命令時,但是這個版本處理定界符出現同樣的錯誤「;」用於語句和分隔符「|」對於我認爲解決問題的存儲過程和函數;試試這個:

- 任何逗號結尾語句這裏(選擇,創建表,刪除表,更新,刪除等)

CREATE FUNCTION hierarchy_connect_by_parent_eq_prior_id(值INT)返回值INT

- 功能這裏的身體

END |

- 這裏的其他語句或函數