【发布时间】:2020-04-24 04:11:19
【问题描述】:
我目前正在尝试在存储在 Google Cloud Platform 上的 MySQL 上创建存储过程。
看到我可以在本地创建过程,SQL 是正确的,但我不知道为什么它不能从命令行运行:
mysql> CREATE PROCEDURE helpme
-> (
-> @cid varchar(4)
-> )
-> AS
-> DECLARE @res_cnt INT
-> DECLARE @name CHAR(10)
->
-> SELECT @res_cnt = COUNT(*) FROM dbo.TripGuides WHERE GuideNum = @cid
-> SELECT @name = LastName FROM dbo.Guide WHERE GuideNum = @cid
-> PRINT @name + ' has ' + CAST (@res_cnt AS VARCHAR(10))+' guides.';
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 '@cid varchar(4)
)
AS
DECLARE @res_cnt INT
DECLARE @name CHAR(10)
SELECT @res_cn' at line 3
mysql>
我尝试了一些不同的方法,谢谢我遇到了。在声明 @cid 时,我都尝试了
@cid CHAR(4)
@cid VARCHAR(4)
导致抛出相同的错误。
【问题讨论】:
-
还有
@cid是一个用户变量,它不同于过程参数和DECLARE变量。 -
UDV 不能用作参数名称。使用局部变量。
-
@danblack 不,除非您说我必须在通话中添加 DELIMITER。我还希望 @cid 成为用户定义的变量。
-
@akina 我不确定你的意思。