簡體   English   中英

mysql存儲過程聲明在執行時拋出錯誤

[英]mysql stored procedure declaration throws error on execution

嘗試創建此存儲過程時,我不斷收到此錯誤。我試圖編寫一個過程,以逗號分隔的字符串進行分割。類似於explode。我感覺到了。

這是錯誤

您的SQL語法有誤; 檢查與您的MySQL服務器版本相對應的手冊,以在'DECLARE start_pos,end_pos INT附近使用正確的語法; SET start_pos = 1; 在第6行SET end_pos = Locat'

我從SQL Server示例中復制了邏輯,並盡力將其轉換為MySql語法。

這是從頭到尾的整個過程。 我希望訓練有素的眼睛可以解釋為什么我出錯了。

DELIMITER $$

CREATE procedure split_string (in p_string_to_split VARCHAR(255),in p_delimiter CHAR(1) ) 
BEGIN    
    DROP TEMPORARY TABLE IF EXISTS split_channel_ids;
    CREATE TEMPORARY TABLE split_channel_ids (p_channel_id int);

    DECLARE start_pos, end_pos INT;
    SET start_pos = 1;
    SET end_pos = Locate(p_delimiter, p_string_to_split); 
    WHILE (start_pos < CHAR_LENGTH(p_string_to_split) + 1) DO
        IF (end_pos = 0) THEN
            SET end_pos = CHAR_LENGTH(p_string_to_split) + 1;
        END IF;
        --- INSERT split_channel_ids (p_channel_id)  
        --- VALUES(SUBSTRING(p_string_to_split, start_pos, end_pos - start_pos)) ;
        SET start_pos = end_pos + 1;
        SET end_pos = Locate(p_delimiter, p_string_to_split, start_pos);
    END WHILE; 
    -- select * from imob_users;
    select * from split_channel_ids;
END $$
DELIMITER ;

(在MySQL中) DECLARE語句必須在其包圍BEGIN...END塊的開頭。

在MS SQL中,它們可以在任何地方。 但這很煩人,因為它們沒有塊作用域,它們有過程作用域,所以您不能在獨立的塊中“重用”名稱。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM