我有两个功能 - 一个用于设置变量,另一个用于查看变量。我们的想法是在视图中使用变量。
我真的很擅长功能。 Anyhoo,这是他们应该做的事情:
GetSiteId:
BEGIN
#Routine body goes here...
RETURN @siteContext;
END
SetSiteId:
BEGIN
#Routine body goes here...
set @siteContext := SiteId;
RETURN @siteContext;
END
这有一个int参数SiteId。
但是当我尝试执行它们时,我收到错误。
我这样执行它们:
SetSiteId(1);
select GetSiteId();
如果我在SetSiteId上执行选择它工作正常,但我不想看到它,我只想看到GetSiteId的结果,它应该是1。
我想也许有一个特定的关键字来执行这个功能,但是找不到任何关键字而Google没有帮助。我怀疑我可能会把这一切都搞错了,但我看不出它似乎应该是世界上最简单的事情来执行一个函数。
我得到的那么无益的错误是:
您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在第1行的“SetSiteId(1)”附近使用正确的语法
答案 0 :(得分:2)
MySQL中有三种基本类型的存储代码:
函数返回一个值。因此,需要从可以接受该值的上下文中调用它。因此,您可以使用
SET @something := YOUR_FUNCTION(param, param);
或
SELECT YOUR_FUNCTION(param, param)
存储过程返回结果集(或者,也可以不返回结果集)。用
打电话 CALL YOUR_PROCEDURE(param, param)
所以,你可以像这样调用你的第一个存储函数:
SET @junk := SetSiteId(1);
或者您可以使用SELECT调用它,只需忽略结果集。