powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Подскажите как выполнить sql в коде из текстовой переменной?
6 сообщений из 6, страница 1 из 1
Подскажите как выполнить sql в коде из текстовой переменной?
    #39595057
камаз5320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДОбрый день.

Например, переменной присваиваю

'COPY .... бла бла бла;'


А как сделать чтобы этот текс выполнился?

ФОрмируется он в цикле с разными вариациями.
...
Рейтинг: 0 / 0
Подскажите как выполнить sql в коде из текстовой переменной?
    #39595184
Andy_OLAP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
камаз5320ДОбрый день.

Например, переменной присваиваю

'COPY .... бла бла бла;'


А как сделать чтобы этот текс выполнился?

ФОрмируется он в цикле с разными вариациями.
Если SQL код - то согласно официальной документации выполняется так:
Код: plsql
1.
2.
3.
4.
5.
EXEC SQL BEGIN DECLARE SECTION;
const char *stmt = "CREATE TABLE test1 (...);";
EXEC SQL END DECLARE SECTION;

EXEC SQL EXECUTE IMMEDIATE :stmt;
...
Рейтинг: 0 / 0
Подскажите как выполнить sql в коде из текстовой переменной?
    #39595189
Andy_OLAP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
камаз5320ДОбрый день.

Например, переменной присваиваю

'COPY .... бла бла бла;'


А как сделать чтобы этот текс выполнился?

ФОрмируется он в цикле с разными вариациями.
А если в цикле формируется динамически - то примерно так .
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
CREATE OR REPLACE FUNCTION public.exec(
text)
RETURNS SETOF RECORD
LANGUAGE 'plpgsql'
AS $BODY$
BEGIN 
    RETURN QUERY EXECUTE $1 ; 
END 
$BODY$;


usage:
Код: plsql
1.
select * from exec('select now()') as t(dt timestamptz)
...
Рейтинг: 0 / 0
Подскажите как выполнить sql в коде из текстовой переменной?
    #39595197
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andy_OLAPкамаз5320ДОбрый день.

Например, переменной присваиваю

'COPY .... бла бла бла;'


А как сделать чтобы этот текс выполнился?

ФОрмируется он в цикле с разными вариациями.
А если в цикле формируется динамически - то примерно так .
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
CREATE OR REPLACE FUNCTION public.exec(
text)
RETURNS SETOF RECORD
LANGUAGE 'plpgsql'
AS $BODY$
BEGIN 
    RETURN QUERY EXECUTE $1 ; 
END 
$BODY$;


usage:
Код: plsql
1.
select * from exec('select now()') as t(dt timestamptz)





ТС пишет, что ему надо "'COPY .... бл* бл* нах;'", а зачем

RETURN QUERY EXECUTE $1 ; ?

и какой рекордсет это вернёт?
...
Рейтинг: 0 / 0
Подскажите как выполнить sql в коде из текстовой переменной?
    #39595203
Andy_OLAP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин,

Он пишет - " например , переменной присваиваю", а в заголовке темы "как выполнить sql в коде из текстовой переменной".
...
Рейтинг: 0 / 0
Подскажите как выполнить sql в коде из текстовой переменной?
    #39595729
andruuche
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
камаз5320,

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
do language plpgsql 
$$
declare
  schema_name text;
  table_name text;
  filename text;
begin
  loop
    ...
    schema_name := 'blaschema';
    table_name := 'blatable';
    filename := '/tmp/blafile';

    execute format('COPY %I.%I from %L', schema_name, table_name, filename);
    ...
  end loop;
end;
$$;



подробнее здесь: https://www.postgresql.org/docs/10/static/plpgsql-statements.html#PLPGSQL-STATEMENTS-EXECUTING-DYN
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Подскажите как выполнить sql в коде из текстовой переменной?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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