Mysql
IN儲存過程附近的MySQL語法錯誤1064
有抱負的 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 ] ; [... ;]
如您所見,顯然不支持將參數聲明為
IN
、OUT
或INOUT
。(但是它們確實支持參數的預設值,這是 MySQL 和 MariaDB 都不支持的!)