|
Функция выполняется правильно только один раз
|
|||
---|---|---|---|
#18+
Функция выполняется правильно только один раз. Запускаешь ее второй раз - вылетает мускул сервер. Кто поскажет где ошибка, может я не правильно написал функцию? CREATE FUNCTION FRUT_FOSTTOV (KODTOV1 CHAR, DATA1 DATE, KODSKL1 CHAR) RETURNS FLOAT BEGIN DECLARE Ostatok FLOAT; DECLARE c1 cursor FOR select IFNULL(boss.oborkolvo, 0)+ross.ostatok from (select o.kodtov, IFNULL(sum(A.KOLVO),0) oborkolvo from frut_t_obor A, (select kodtov, kol, data from frut_t_osttov A, (select MAX(DATA) maxdata from frut_t_osttov A Where KODTOV=KODTOV1 and Data<DATA1 and A.KODSKL= KODSKL1 ) p Where KODTOV=KODTOV1 and data=p.maxdata and Data<DATA1 and A.KODSKL= KODSKL1 ) o Where A.KODTOV=KODTOV1 and o.kodtov = a.kodtov and A.DATA>IFNULL(o.data,str_to_date('01.01.1981','%d.%m.%Y')) and A.DATA<=IFNULL(DATA1,str_to_date('01.01.1981','%d.%m.%Y')) and A.KODSKL=KODSKL1 group by o.kodtov) boss RIGHT JOIN (select kodtov, kol ostatok, data from frut_t_osttov A, (select MAX(DATA) maxdata from frut_t_osttov A Where KODTOV=KODTOV1 and Data<DATA1 and A.KODSKL= KODSKL1 ) p Where KODTOV=KODTOV1 and data=p.maxdata and Data<DATA1 and A.KODSKL= KODSKL1) ross ON (boss.kodtov = ross.kodtov); Open c1; FETCH c1 into Ostatok; Return Ostatok; Close c1; END; А запуск такой: mysql> select FRUT_FOSTTOV ('1/11514',str_to_date('01.02.2004','dd.mm.yyyy'),'11'); ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2004, 19:17 |
|
Функция выполняется правильно только один раз
|
|||
---|---|---|---|
#18+
Пробовал даже построить элементарную функцию, где находится максимум по какому-то полю таблицы, и все равно правильно она не работает, ПОЧЕМУ??? Самое интересное это то, что запустишь ее первый раз, посчитает правильно, второй - совсем "левое" значение "202" - ОТКУДА??? CREATE FUNCTION FRUT_FOSTTOV103 (KODTOV1 CHAR, DATA1 DATE, KODSKL1 CHAR) RETURNS FLOAT BEGIN DECLARE Ostatok FLOAT; DECLARE c1 cursor FOR select max(kol) from frut_t_osttov; Open c1; FETCH c1 into Ostatok; Return Ostatok; Close c1; END; kol тип float. Что я делаю не так? Я даже уверен, что делаю что-то не так. Весь справочник по мускул касательно функций излазил - вообщем запарился. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2004, 19:25 |
|
Функция выполняется правильно только один раз
|
|||
---|---|---|---|
#18+
Вот она - альфа. Я поискал в bug, нашел похожее. http://bugs.mysql.com/bug.php?id=2656 Жизнь коротка - потерпи немного :) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2004, 08:43 |
|
Функция выполняется правильно только один раз
|
|||
---|---|---|---|
#18+
Вот она - альфа. Я поискал в bug, нашел похожее. http://bugs.mysql.com/bug.php?id=2656 Жизнь коротка - потерпи немного :) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2004, 08:44 |
|
Функция выполняется правильно только один раз
|
|||
---|---|---|---|
#18+
А в Постгресе процедурный язык PL/PgSQL появился в http://www.postgresql.org/docs/7.4/interactive/release-6-4.html]версии 6.4, вышедшей в 1998 году . Пользуйтесь стабильной отлаженной версией! ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2004, 10:12 |
|
|
start [/forum/topic.php?fid=47&fpage=688&tid=1855233]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
24ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
others: | 338ms |
total: | 451ms |
0 / 0 |