我正在尝试在数据库级别向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
有人可以告诉我这里出了什么问题吗?
答案 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)