Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / execute immediate .... error / 7 сообщений из 7, страница 1 из 1
30.07.2012, 17:01
    #37898070
Mykola
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
execute immediate .... error
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
30.07.2012, 18:18
    #37898176
spas2001
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
execute immediate .... error
Не могу попробовать
Но вот это
Код: 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
30.07.2012, 18:30
    #37898188
Anatoly Moskovsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
execute immediate .... error
Mykola,

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

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

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

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


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