powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / execute immediate .... error
7 сообщений из 7, страница 1 из 1
execute immediate .... error
    #37898070
Mykola
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PowerBuilder 12, MySQL 5.1
1. при выполнение из NetBeans

DROP FUNCTION IF EXISTS sk_base.fn_varelog_backup_2_vare_speed_active;

DELIMITER $$

CREATE FUNCTION sk_base.fn_varelog_backup_2_vare_speed_active()
RETURNS INTEGER
BEGIN
DECLARE iRet INTEGER DEFAULT 0;
DECLARE varenr VARCHAR(30);
DECLARE speed_active INTEGER;
DECLARE done INTEGER;

DECLARE cur_vlb CURSOR FOR
SELECT DISTINCT
v.v_varenr,
IF(ISNULL(v.v_speed_active), 0, v.v_speed_active) AS v_speed_active
FROM varelog_backup vl
JOIN vare v ON v.v_varenr = vl.vl_varenr
AND IF(ISNULL(v.v_speed_active), 0, v_speed_active) <> 1 -- (= 1 this vare is now use speed_active)
;

DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done=1;

OPEN cur_vlb;

FETCH cur_vlb INTO varenr, speed_active;


WHILE done = 0 DO
UPDATE vare SET v_speed_active = 1 WHERE v_varenr = varenr;
FETCH cur_vlb INTO varenr, speed_active;
END WHILE;

CLOSE cur_vlb;

RETURN iRet;

END
$$

DELIMITER ;

скрипт выполняется успешно и функция создается.

2. при выполнение из кода powerbuilder
execute immediate :..._sql ... ;
получаем ошибку
SQLSTATE = 37000 You have an error in your sql syntax. .....

Заранее спасибо.
...
Рейтинг: 0 / 0
execute immediate .... error
    #37898176
Фотография spas2001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не могу попробовать
Но вот это
Код: sql
1.
DROP FUNCTION IF EXISTS sk_base.fn_varelog_backup_2_vare_speed_active;


и вот это
Код: sql
1.
CREATE FUNCTION sk_base.fn_varelog_backup_2_vare_speed_active()


в разные строковые переменные и в разные execute immediate
Это вообще не надо выполнять, скорее всего
Код: sql
1.
DELIMITER $$
...
Рейтинг: 0 / 0
execute immediate .... error
    #37898188
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mykola,

А разве Execute Immediate умеет выполнять группы операторов?
Насколько я помню там надо передавать отдельные операторы (и даже без завершающей ;)
...
Рейтинг: 0 / 0
execute immediate .... error
    #37898226
Фотография spas2001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может, но вот MySQL никогда не пробовал
Анатолий, create function по-сути тоже команда, а насчет последней ; - кажись так и есть
...
Рейтинг: 0 / 0
execute immediate .... error
    #37898338
Mykola
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
может. для ASA подобное работало
...
Рейтинг: 0 / 0
execute immediate .... error
    #37898384
maxATC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mykolaможет. для ASA подобное работало
Подобное и сейчас работает.
...
Рейтинг: 0 / 0
execute immediate .... error
    #37898573
Mykola
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да работает. только конечно синтаксис asa (watcom sql).

для MySQL 5.1 заработал вариант:
разбил на две строки и убрал Delimiter
1. первая строка DROP .... + execute.
2. вторая строка CREATE .... + execute.

одной строкой (без Delimiter) .... + execute - еще не пробовал.

Большое спасибо всем за помощь.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / execute immediate .... error
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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