首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

MySQL 預存過程語法錯誤:DELETE 誤用於變量聲明

     編輯:程式設計疑難解答

錯誤現象

在 MySQL Workbench 或命令行創建預存過程時,包含以下語句導致保存報錯:

DELETE page_first INT DEFAULT 0;
SET page_first = (page_index - 1) * page_size;

刪除這兩行後可正常保存。

錯誤原因分析

  1. DELETE 是 DML 語句,不能用於聲明變量。 MySQL 中聲明局部變量必須使用 DECLARE 關鍵字,且只能在 BEGIN ... END 塊的開頭。
  2. 語法結構錯誤: DELETE page_first INT DEFAULT 0 將 DELETE 當成了聲明關鍵字,完全不符合 SQL 語法。

正確寫法

1. 聲明變量

CREATE PROCEDURE `proc_name`(IN page_index INT, IN page_size INT)
BEGIN
    -- 必須在 BEGIN 之後、其他語句之前聲明
    DECLARE page_first INT DEFAULT 0;
    DECLARE page_last INT DEFAULT 0;
    
    -- 賦值使用 SET 或 SELECT ... INTO
    SET page_first = (page_index - 1) * page_size;
    SET page_last = page_first + page_size;
    
    -- 後續業務邏輯...
    SELECT * FROM your_table LIMIT page_first, page_size;
END

2. 關鍵規則總結

  • DECLARE var_name type [DEFAULT value]; —— 聲明局部變量。
  • SET var_name = expr; —— 賦值。
  • SELECT col INTO var_name FROM ... —— 查詢結果賦值。
  • 變量作用域僅限於所在的 BEGIN ... END 塊。
  • 絕對不能 使用 DELETE、DROP、CREATE 等 DDL/DML 關鍵字聲明變量。

調試建議

MySQL Workbench 編輯器會高亮語法錯誤,報錯信息通常包含行號。遇到「語法錯誤」優先檢查該行關鍵字是否拼寫正確、是否用於正確上下文。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved