首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

Navicat 創建存儲過程報 1303 錯誤:CREATE PROCEDURE 不需手寫

     編輯:MySQL 資料庫相關知識

錯誤現象

1303 - Can't create a PROCEDURE from within another stored routine.

問題代碼


-- 在 Navicat 編輯器中直接貼入此代碼會報錯
CREATE PROCEDURE addData()
BEGIN
  DECLARE v INT DEFAULT 0;
  WHILE v < 4000000 DO
    INSERT INTO TestMemory VALUES (v, 'ffffffffffffffffffffffffffasgeweeeeeeeeeeeeeg');
    SET v = v + 1;
  END WHILE;
END

根因

Navicat 等 GUI 工具的存儲過程編輯器已自動包裹 CREATE PROCEDURE 外殼,用戶只需編寫 BEGIN ... END 內部邏輯。手寫外層導致「在存儲過程中創建存儲過程」語法錯誤。

修正


-- 刪除第一行 CREATE PROCEDURE addData(),僅保留:
BEGIN
  DECLARE v INT DEFAULT 0;
  WHILE v < 4000000 DO
    INSERT INTO TestMemory VALUES (v, 'ffffffffffffffffffffffffffasgeweeeeeeeeeeeeeg');
    SET v = v + 1;
  END WHILE;
END

✅ 命令行直接執行完整 SQL 無此問題,僅 GUI 工具編輯器需注意。

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