powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Анонимный блок кода?
6 сообщений из 6, страница 1 из 1
Анонимный блок кода?
    #39876360
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть ли что-то подобное постгресовскому анонимному блоку?

Скажем, я делаю большой файл со скриптами для изменения структуры базы, возможно каких-то данных.
Этот скрипт может быть запущен в любом клиенте. Мне надо бы иметь возможность делать какие-то действия в зависимости от условий и т.д.

Например, в PG я могу выполнить в скрипте в блоке что-то типа такого:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
DO $$DECLARE r record;
BEGIN
    FOR r IN SELECT table_schema, table_name FROM information_schema.tables
             WHERE table_type = 'VIEW' AND table_schema = 'public'
    LOOP
        EXECUTE 'GRANT ALL ON ' || quote_ident(r.table_schema) || '.' || quote_ident(r.table_name) || ' TO webuser';
    END LOOP;
END$$;




Есть ли что-то похожее в MariaDB?
...
Рейтинг: 0 / 0
Анонимный блок кода?
    #39876377
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет, оборачивайте в процедуру.
...
Рейтинг: 0 / 0
Анонимный блок кода?
    #39876380
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг ХупинЕсть ли что-то подобное постгресовскому анонимному блоку?Нет, насколько я помню.
...
Рейтинг: 0 / 0
Анонимный блок кода?
    #39876387
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkinaНет, оборачивайте в процедуру.

т.е. если нужна логика при выполнении скрипта, надо создать процедуру, затем выполнить.

Вот, кстати, нашел еще такое

https://mariadb.com/kb/en/library/begin-end/

автор[begin_label:] BEGIN [NOT ATOMIC]
[statement_list]
END [end_label]
Contents
Syntax
Description
See Also
NOT ATOMIC is required when used outside of a stored procedure. Inside stored procedures or within an anonymous block, BEGIN alone starts a new anonymous block.


но пример не работает, пишет ошибку синтаксиса

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
BEGIN NOT ATOMIC
SET @a=1;
IF @a >0 
then
select 112 as 'bubu';
else
select 987 as 'kuku';
end if;
END
...
Рейтинг: 0 / 0
Анонимный блок кода?
    #39876415
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупинпишет ошибку синтаксисаНу вообще-то сообщения об ошибке принято цитировать, а не пересказывать... как минимум. DELIMITER-то не забыл?
...
Рейтинг: 0 / 0
Анонимный блок кода?
    #39876426
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkinaРолг Хупинпишет ошибку синтаксисаНу вообще-то сообщения об ошибке принято цитировать, а не пересказывать... как минимум. DELIMITER-то не забыл?

точно, спасибо, так сработал

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
DELIMITER $$
BEGIN NOT ATOMIC
SET @a=1;
CREATE TABLE dududu(a INT);
IF @a >0 
then
select 112 as 'bubu';
else
select 987 as 'kuku';
end if;
END$$
DELIMITER;
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Анонимный блок кода?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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