Mysql

為什麼我的語句會導致語法錯誤?

  • June 27, 2016

我試圖在 MySQL 5.5 和 5.7.1 中執行這個 SQL 語句,但總是出錯。

DELIMITER //
CREATE PROCEDURE one_off_update_user_info_view_type()
 BEGIN
   DECLARE @batchsize BIGINT DEFAULT 1;
 END
//

在此處輸入圖像描述

您可以在本地 MySQL 5.5+ 中檢查該腳本,因為它不包含任何業務邏輯或公司內部數據庫。誰能告訴我為什麼會出現錯誤以及如何解決?

您使用DECLARE複合語句語法來聲明局部變數、游標、條件或處理程序。但是,由於前綴的存在,您的變數@batchsize會話全域變數@,嘗試重新聲明全域變數是錯誤的。

將變數的名稱從 更改@batchsizebatchsize,然後閱讀 MySQL 變數。

您不能使用@variable_name來聲明變數。@只能用於會話變數。

將您的程式碼更改為此,它將起作用

分隔符 //
創建過程 one_off_update_user_info_view_type()
開始
DECLARE batchsize BIGINT DEFAULT 1;
結尾
//

引用自:https://dba.stackexchange.com/questions/142299