在MonetDB中创建函数

时间:2015-06-19 13:41:37

标签: sql function monetdb

我正在尝试在数据库级别向monetDB添加一个简单的函数,它只执行sum(n)并返回结果

create function sys.foo(number int)
returns int
begin
declare tsum int;
set tsum = 0;
while number > 0 do
set tsum = tsum + number;
set number = number -1;
end while;
return tsum;
end;

尝试执行上述代码时,我发现错误如下

  

[错误代码:0,SQL状态:42000]语法错误,意外$ end,期待WHILE:“create function sys.foo(number int)

中输入流的结束

我可以在MySQL中添加相同的功能,它可以工作!!

>select sys.foo(10) 
sys.foo(10)
-----------
55

有人可以告诉我这里出了什么问题吗?

1 个答案:

答案 0 :(得分:0)

这对我来说很好(2014年10月发布的MonetDB,Mac OS X)

➜ ~ mclient Welcome to mclient, the MonetDB/SQL interactive terminal (unreleased) Database: MonetDB v11.19.16 (unreleased), 'demo' Type \q to quit, \? for a list of available commands auto commit mode: on sql>create function sys.foo(number int) more>returns int more>begin more>declare tsum int; more>set tsum = 0; more>while number > 0 do more>set tsum = tsum + number; more>set number = number -1; more>end while; more>return tsum; more>end; operation successful (2.127ms)

sql>select sys.foo(10); +------------------+ | foo_single_value | +==================+ | 55 | +------------------+ 1 tuple (1.771ms)