powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Прошу помочь с EXECUTE STATEMENT
7 сообщений из 7, страница 1 из 1
Прошу помочь с EXECUTE STATEMENT
    #39472460
joker1990
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прошу помочь с EXECUTE STATEMENT, а именно, мне нужно выполнить два запроса, читал, что нужно вызвать EXECUTE STATEMENT для каждого из них.
Пытаюсь выполнить следующее через IBExpert из файла:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
SET TERM #;
execute block
as
begin
    if (exists(
    select 1 from RDB$RELATION_FIELDS rf
    where rf.RDB$RELATION_NAME = 'TABLE1' and rf.RDB$FIELD_NAME = 'FIELD1'/*тут еще хочу добавить условие на тип не varchar на поле FIELD1*/))
    then
        execute statement 'ALTER TABLE TABLE1 alter column FIELD1 type varchar(40)';
	execute statement 'update TABLE1 set FIELD1=trim (trailing ''.'' from (trim (trailing ''0'' from FIELD1)))';		
end #
SET TERM ;#


Проблема в том что за первый прогон скрипта выполняется только первый скрипт с execute statement, при втором прогоне выполняется уже второе условие, подскажите, пожалуйста, что я не так делаю?
...
Рейтинг: 0 / 0
Прошу помочь с EXECUTE STATEMENT
    #39472461
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
joker1990подскажите, пожалуйста, что я не так делаю?

Всё, начиная с консерватории и заканчивая отсутствующим BEGIN-END.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Прошу помочь с EXECUTE STATEMENT
    #39472468
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
15.06.2017 16:28, joker1990 пишет:
> что я не так делаю?

не читаешь как именно работает IF THEN
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Прошу помочь с EXECUTE STATEMENT
    #39472557
joker1990
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мимопроходящий,
почитал немного и сделал следующее:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
SET TERM #;
execute block
as
begin
    if (exists(
    select 1 from RDB$RELATION_FIELDS rf
    where rf.RDB$RELATION_NAME = 'TABLE1' and rf.RDB$FIELD_NAME = 'FIELD1'/*добавить условие на тип НЕ варчар*/))
    then
	begin
                execute statement 'ALTER TABLE TABLE1 alter column FIELD1 type varchar(40)';	
	END
	ELSE
	BEGIN
		execute statement 'update TABLE1 set FIELD1=trim (trailing ''.'' from (trim (trailing ''0'' from FIELD1)))';		
	end
end #
SET TERM ;#


Результат тот же, потому наверное опять не то сделал, где можно почитать?
...
Рейтинг: 0 / 0
Прошу помочь с EXECUTE STATEMENT
    #39472565
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
joker1990,

с чтением у тебя проблемы похоже
...
Рейтинг: 0 / 0
Прошу помочь с EXECUTE STATEMENT
    #39472605
joker1990
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов Денис,
таких проблем нет.
...
Рейтинг: 0 / 0
Прошу помочь с EXECUTE STATEMENT
    #39472629
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
joker1990> что я не так делаю?

Пытаешься в один проход и DDLить и тут же его же DMLить. Так нельзя.
Извернуться-то можно, но мы тебе не скажем как, ибо чини консерваторию.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Прошу помочь с EXECUTE STATEMENT
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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