powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Запустить скрипт
7 сообщений из 7, страница 1 из 1
Запустить скрипт
    #35589046
Alex Zhulin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!
Пытаюсь выполнить скрипт

begin
for i in 1..100
loop
insert into obj_classes
('obj_class_name')
values
('123');
end loop;
end;
$$
LANGUAGE plpgsql;

Получаю
ERROR: syntax error at or near "for"
LINE 2: for i in 1..100
^

********** Ошибка **********

ERROR: syntax error at or near "for"
SQL state: 42601
Характеристика:7

Как в скриптах организовать циклы?
Поиском по форуму ответ не нашел :-)
...
Рейтинг: 0 / 0
Запустить скрипт
    #35589170
Фотография Степан H.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
искать надо не в форуме а в соответствующем разделе документации. Пердварительно познакомившись c этим разделом .

А еще лучше начать с этого
...
Рейтинг: 0 / 0
Запустить скрипт
    #35589261
Sishnikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
insert into obj_classes
(obj_class_name)
values
('123');
...
Рейтинг: 0 / 0
Запустить скрипт
    #35589434
Фотография Степан H.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sishnikov
Код: plaintext
1.
2.
3.
4.
insert into obj_classes
(obj_class_name)
values
('123');


не факт, возможно нет переменной i в declare, как и самого declare ))
...
Рейтинг: 0 / 0
Запустить скрипт
    #35589848
Alex Zhulin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Степан H. Sishnikov
Код: plaintext
1.
2.
3.
4.
insert into obj_classes
(obj_class_name)
values
('123');


не факт, возможно нет переменной i в declare, как и самого declare ))

Я, видимо, не достаточно точно выразил свои намерения.
Мне нужно выполнить некие разовые манипуляции с БД, которые не укладываются в один SQL-запрос. Поэтому я пытаюсь это выполнить посредством PL/pgSQL блока.
Оборачивать этот блок в функцию я не хочу.
Запустил Query Tool из pgAdmin и пытаюсь выполнить описанный выше блок.
Не проходит ни так:

declare
i INTEGER;
begin
for i in 1..100
loop
insert into obj_classes
('obj_class_name')
values
('123');
end loop;
end;
$$
LANGUAGE plpgsql;


Ошибка
ERROR: syntax error at or near "INTEGER"
LINE 2: i INTEGER;
^

********** Ошибка **********

ERROR: syntax error at or near "INTEGER"
SQL state: 42601
Характеристика:11

Ни так

begin
for i in 1..100
loop
insert into obj_classes
('obj_class_name')
values
('123');
end loop;
end;
$$
LANGUAGE plpgsql;


Ошибка
ERROR: syntax error at or near "for"
LINE 2: for i in 1..100
^

********** Ошибка **********

ERROR: syntax error at or near "for"
SQL state: 42601
Характеристика:7

В Oracle в SQL-plus подобные анонимные блоки выполняются без проблем.
В чем моя принципиальная ошибка?
Что я делаю не верно?
...
Рейтинг: 0 / 0
Запустить скрипт
    #35589867
Sad Spirit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В PostgreSQL нет анонимных блоков, только функции.
...
Рейтинг: 0 / 0
Запустить скрипт
    #35590204
Alex Zhulin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sad SpiritВ PostgreSQL нет анонимных блоков, только функции.

Понял - спасибо.
Жаль...

Еще один вопрос немного не в тему:
Как отключить в Query Tool autocommit?
Чтобы после выполнения запроса можно было сделать rollback?
Спасибо.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Запустить скрипт
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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