2015-06-19 4 views
0

Я пытаюсь добавить простую функцию, чтобы monetDB на уровне базы данных, которая просто делает сумму (п) и возвращает результатСоздать функцию в MonetDB

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; 

При попытке выполнить код выше I» ошибка видя м следующим

[Код ошибки: 0, SQL Состояние: 42000] ошибка синтаксиса, неожиданный $ конец, ожидая WHILE: конец входного потока в «создать функцию sys.foo (номер Int)

Я могу добавить ту же функцию в MySQL, и она работает!

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

Может кто-нибудь, пожалуйста, дайте мне знать, что здесь происходит не так?

+0

Я не могу воспроизвести проблему. Голосование закрывается. – zero323

+0

были ли у вас возможности успешно добавить эту функцию? какую версию монета вы используете? Я пытаюсь с oct2014-SP4 версии в среде Windows. –

+0

Я использовал изображение [Docker] (https://registry.hub.docker.com/u/monetdb/monetdb-r-docker/). MonetDB v11.19.11 (Oct2014-SP3) для Fedora. – zero323

ответ

0

Это отлично работает для меня (Oct2014 выпуск 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)

+0

выглядит проблемой, когда вы используете SQLWorkbench для этого ... Работали, когда я пробовал его из mclient ... Спасибо! –

Смежные вопросы