没有选择执行功能

时间:2015-11-27 15:52:27

标签: mysql function

我有两个功能 - 一个用于设置变量,另一个用于查看变量。我们的想法是在视图中使用变量。

我真的很擅长功能。 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)”附近使用正确的语法

1 个答案:

答案 0 :(得分:2)

MySQL中有三种基本类型的存储代码:

  1. 存储功能 - 你拥有的东西
  2. 存储过程
  3. 活动(暂不考虑这些)。
  4. 函数返回一个值。因此,需要从可以接受该值的上下文中调用它。因此,您可以使用

    SET @something := YOUR_FUNCTION(param, param);
    

    SELECT YOUR_FUNCTION(param, param)
    

    存储过程返回结果集(或者,也可以不返回结果集)。用

    打电话
     CALL YOUR_PROCEDURE(param, param)
    

    所以,你可以像这样调用你的第一个存储函数:

     SET @junk := SetSiteId(1);
    

    或者您可以使用SELECT调用它,只需忽略结果集。