powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Использование CTA (Common Table Expressions) внутри хранимых процедур
4 сообщений из 4, страница 1 из 1
Использование CTA (Common Table Expressions) внутри хранимых процедур
    #38735172
Фотография chernomyrdin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возник вопрос, про то как выполнить CTA запрос внутри процедуры

Есть CTA запрос, он прекрасно выполняется вне процедуры:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
psql> WITH today AS (
    ...SQL1...
), org_list AS (
    SELECT id AS org_id, ...SQL2...
), delivery_list AS (
    SELECT id AS org_id, ...SQL3...
), promo_list AS (
    SELECT id AS org_id, ...SQL4...
) INSERT INTO search_table SELECT ... FROM
    today, org_list AS o left join delivery_list AS d ON (d.org_id = o.org_id) left join promo_list AS p ON (p.org_id = o.org_id);



Если я хочу обернуть его в функцию:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
CREATE OR REPLACE FUNCTION table_search_rebuild() RETURNS void AS
$BODY$
TRUNCATE TABLE search_table;
WITH today AS (
    ...SQL1...
), org_list AS (
    SELECT id AS org_id, ...SQL2...
), delivery_list AS (
    SELECT id AS org_id, ...SQL3...
), promo_list AS (
    SELECT id AS org_id, ...SQL4...
) INSERT INTO search_table SELECT ... FROM
    today, org_list AS o left join delivery_list AS d ON (d.org_id = o.org_id) left join promo_list AS p ON (p.org_id = o.org_id)
$BODY$
  LANGUAGE sql VOLATILE
  COST 100;



Ругается на WITH, добавляю PERFORM перед ним - тоже не помогает.
...
Рейтинг: 0 / 0
Использование CTA (Common Table Expressions) внутри хранимых процедур
    #38735193
Фотография vyegorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chernomyrdin,

А как конкретно ругается?
...
Рейтинг: 0 / 0
Использование CTA (Common Table Expressions) внутри хранимых процедур
    #38735195
/\/\/\/\/\/\
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
chernomyrdin,

У Вас точка с запятой между скобкой и нижним $BODY$ есть?
...
Рейтинг: 0 / 0
Использование CTA (Common Table Expressions) внутри хранимых процедур
    #38735947
Фотография chernomyrdin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем большое спасибо, вопрос закрыт.

Действительно была синтаксическая ошибка в одном из SQL выражений, но psql почему-то ругался на самое начало WITH и говорил что недопустимое выражение
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Использование CTA (Common Table Expressions) внутри хранимых процедур
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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