2012-07-02 276 views
3

好吧,我一直在爲這一個撕開我的頭髮,爲什麼這不起作用?MySQL的「DELIMITER」關鍵字不起作用

DELIMITER | 

CREATE PROCEDURE Decrypt_pw() 
    READS SQL DATA 
BEGIN 
    SELECT 'Hey Select'; 
END| 

這是如此基本,我敢肯定我使用正確的語法,我錯過了什麼?

錯誤:

21:14:07 [DELIMITER - 0 row(s), 0.000 secs] [Error Code: 1064, SQL State: 42000] 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 PROCEDURE Decrypt_pw() 
    READS SQL DATA 
BEGIN 
    SELECT 'He' at line 1 
21:14:07 [END| - 0 row(s), 0.000 secs] [Error Code: 1064, SQL State: 42000] 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 'END|' at line 1 

我使用DBVisualizer中,最新的版本,可能這個問題是與軟件本身?

也許我應該更好地解釋一下自己,密碼是在我的數據庫中加密的(不用擔心),這可以讓我解密它們,這是我正在進行的個人項目。

我正在嘗試開發一個腳本,它允許我運行它並設置必要的數據庫,表格等以供工作,並且我需要一些必須同時創建的SP,我正在創建一個通過mysqli_query的SP,甚至有可能嗎?

基本上它是一個PHP應用程序的「設置腳本」。

更新:似乎this應該工作,但我不能使用對象,因爲HostGator的人 - .-不允許PHP中的對象。

我幾乎放棄了mysqli,因爲它只是不會工作我試圖用shell_exec,我創建的過程,但當我檢查ddl它是空的,它創建空的過程,但至少它是做東西...

+1

'DELIMITER'關鍵字是客戶特定的,並且是MySQL命令行客戶端的一個功能,而不是實際的MySQL語言API的一部分。如果您需要更改DbVizualizer的分隔符,則可能會在該應用程序中內置另一種方法。 –

+1

你爲什麼要解密密碼?這聽起來很糟糕。 – MetalFrog

+0

查看帖子我解釋過自己好一點,如果你需要,我可以給你發完整的腳本,但是這足以解決我的問題。 –

回答

1

它probaly軟件版本問題...我想你的代碼,它工作得很好,我...... 試試這個

DELIMITER // 
    CREATE PROCEDURE Decrypt_pw() 
      READS SQL DATA 
     BEGIN 
     SELECT 'Hey Select'; 
     END // 
    DELIMITER ; 
+0

無法在PHP上工作,一旦它命中分隔符關鍵字,它會引發錯誤並停止腳本,這很有趣,因爲如果我更改了phpmyadmin中的分隔符選項,它可以工作,但我確定它們不會使用mysqli ... –

+0

我已經設法通過shell_exec得到這個工作,但它創建了一個空過程,就好像它忽略了BEGIN和END之間的任何東西。 –

0

至少爲9.1,DBVisualizer中沒有按不支持DELIMITER關鍵字。這是他們這樣做的方式:link