Mysql

IN儲存過程附近的MySQL語法錯誤1064

  • December 6, 2018

有抱負的 DBA 在這裡。

我正在嘗試為正在執行的查詢創建儲存過程。它是一個基於 MySQL 的 memsql 伺服器。程序是這樣的:

delimiter //
CREATE PROCEDURE calc_campaign (IN usr VARCHAR(38))
BEGIN

Awesome SELECT statement that uses a variable

END //

錯誤描述是:

ERROR 1064 (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 'IN usr VARCHAR(38)) BEGIN my_statement; END' 
at line 1

我使用的語法似乎與此相對應: https ://dev.mysql.com/doc/refman/8.0/en/create-procedure.html 以及我在 Stack 論壇上看到的幾乎所有其他程序。

我在這裡缺少什麼?謝謝你的幫助!

MemSQL 不是 MySQL - 參見他們的頁面MySQL Features Unsupported in MemSQL。有關其儲存過程實現的詳細資訊,請參閱MemSQL 的儲存過程文件

[USING database_name] CREATE [OR REPLACE] PROCEDURE procedure_name ( [parameter_list] )
 [RETURNS { data_type [data_type_modifier] } ] AS
 [DECLARE variable_list] [ ...n ]
 BEGIN
   procedure_body
 END ;

parameter_list:
 parameter_name data_type [data_type_modifier [ ...n ] ] [, ...]

data_type_modifier:
 DEFAULT default_value | NOT NULL | NULL | COLLATE collation_name

variable_list:
 variable_name type_expression [= value_expression ] ; [... ;]

如您所見,顯然不支持將參數聲明為INOUTINOUT。(但是它們確實支持參數的預設值,這是 MySQL 和 MariaDB 都不支持的!)

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