powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Получить выходное значение функции из MySQL
7 сообщений из 7, страница 1 из 1
Получить выходное значение функции из MySQL
    #36170170
Igornew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Помогите
Стандартные варианты предложенные на форумах для MSSQL в MySQL не работают

Код: plaintext
1.
2.
3.
4.
5.
6.
local wh,_ad,_vr

wh= 99 
_ad=karta.adr_id
_vr=thisform._lpuvr
eq=SQLEXEC(con,"{DO ?@wh=delete_one_lpu(?@_ad,?@_vr);}")
?wh

вернее, параметры в функцию уходят, а вот назад получить wh никак не могу
...
Рейтинг: 0 / 0
Получить выходное значение функции из MySQL
    #36173277
Igornew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну что, ни ужели никто не работал с хранимыми функциями?
...
Рейтинг: 0 / 0
Получить выходное значение функции из MySQL
    #36173321
Tohan_ORA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IgornewПомогите
параметры в функцию уходят, а вот назад получить wh никак не могу
Ну что, ни ужели никто не работал с хранимыми функциями?


C MySql не работал,но обычно из функции получают значение через return или через параметры на выход
Упрощенно:

Declare
Код: plaintext
1.
2.
3.
4.
myfunction(v1 in,v2 in,v_ret1 out,v_ret2 out) 
 v_ret1=v1+ 1 
 v_ret2=v2+ 2 
 v_ret=v_ret1+v_ret2
return v_ret

Calls function
Код: plaintext
1.
2.
3.
4.
5.
public my_var,my_var1,my_var2

my_var=myfunction( 1 , 2 ,my_var1,my_var2)
?my_var
?my_var1
?my_var2
...
Рейтинг: 0 / 0
Получить выходное значение функции из MySQL
    #36173395
Igornew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну само сабой через RETURN
Привожу текст функции

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
CREATE DEFINER=`root`@`localhost` FUNCTION `delete_one_lpu`(
    	_adr INT, _lpuvr SMALLINT) RETURNS TINYINT( 3 )
BEGIN
	DECLARE yn SMALLINT;
	CALL update_uch_adrbook_one(_adr, 9999 );
	SET yn=IFNULL((SELECT uch FROM adrbook a1 WHERE adr_id=_adr), 99 );
	
	IF yn<> 99  THEN
	    BEGIN
		RETURN  0 ;
	    END;
	ELSE 
		BEGIN
			SELECT COUNT(flu_id) INTO @kkol FROM karta WHERE vr<>_lpuvr AND adr_id=_adr;
			IF @kkol> 0  THEN 
				BEGIN
					DELETE FROM karta WHERE adr_id=_adr AND vr=_lpuvr;
					RETURN  1 ;
				END;
			ELSE 
				DELETE FROM karta WHERE adr_id=_adr AND vr=_lpuvr;
				DELETE FROM adrbook WHERE adr_id=_adr;
				RETURN  2 ;
			END IF;
		END;
	END IF;
END$$

Далее фрагмент программы на VFP

local wh,_ad,_vr

Код: plaintext
1.
2.
3.
4.
wh= 99 
_ad=karta.adr_id
_vr=thisform._lpuvr
eq=SQLEXEC(con,"{DO ?@wh=delete_one_lpu(?@_ad,?@_vr);}")
?wh
...
Рейтинг: 0 / 0
Получить выходное значение функции из MySQL
    #36173609
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Igornew,
1)зачем собаки? 2)зачем фигурные скобки (может, я чего-то не знаю)?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
_ad=karta.adr_id
_vr=thisform._lpuvr
eq=SQLEXEC(con,"select delete_one_lpu(?_ad,?_vr) as myresult;",'testcursor')
if eq> 0 
_wh=testcursor.myresult
?_wh
use in testcursor
endif
Это через курсор, который sqlexec-ом и возвращается. А напрямую наверное никак.
ЗЫ. "DO executes the expressions but does not return any results ." Так что изначальный вариант ну просто по определению был обречён на неудачу ))
...
Рейтинг: 0 / 0
Получить выходное значение функции из MySQL
    #36173745
Igornew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglir

Через курсор забрать выходное значение, это и в процедуре можно, так я сейчас и поступаю, но зачем-то применяются и функции, у которых специально имеется возвращаемый параметр через RETURN
Было-бы гораздо красивее получать результат через переменную.
Что касается скобок, собак и прочих конструкций, это уж от безысходности собирал с миру по нитке примеры, экспериментировал, безрезультатно...

Так можно ли все-таки получить данные от функции через возвращаемый параметр, а не через курсор???
...
Рейтинг: 0 / 0
Получить выходное значение функции из MySQL
    #36174112
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IgornewТак можно ли все-таки получить данные от функции через возвращаемый параметр, а не через курсор???
Насколько я знаю - нельзя.

Если очень хочется, то создай процедуру с выходым параметром в которой будет только вызов твоей функции, присваивающей вычисленное значение выходному параметру. Ну, а с выходными параметрами работать можно и без курсоров.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Получить выходное значение функции из MySQL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]