powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Временная таблица с заполнением через рекурсивный запрос
10 сообщений из 10, страница 1 из 1
Временная таблица с заполнением через рекурсивный запрос
    #39999539
Дмитрий86
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем добрый вечер!
Есть рекурсивный запрос:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
WITH rec_emp (emp_id) AS
( SELECT emp_id
  FROM Table1
  WHERE emp_id = 10
  UNION
  SELECT t.emp_id
  FROM Table1 t, rec_emp r
  WHERE 
   t.Empid = r.emp_id
)



Нужно создать временную таблицу и туда вставить данные с этого рекурсивного запроса. Мой вариант:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
CREATE VOLATILE TABLE vt_employee(emp_id) AS 
(
   emp_id INTEGER
)ON COMMIT PRESERVE ROWS;

INSERT INTO vt_employee (emp_id) VALUES (
	WITH rec_emp (emp_id) AS
		( SELECT emp_id
  		FROM Table1
 		 WHERE emp_id = 10
 		 UNION
 		 SELECT t.emp_id
 		 FROM Table1 t, rec_emp r
 		 WHERE 
   		 t.Empid = r.emp_id)
)


Не уверен, что конструкция в INSERT-е заработает, подскажите пожалуйста по синтаксису. Всем спасибо!
...
Рейтинг: 0 / 0
Временная таблица с заполнением через рекурсивный запрос
    #39999540
felix_ff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий86,

у вас синтаксис создания таблицы больше на terradata смахивает нежели на transact-sql;

вы уверены что в правильную ветку форума написали?
...
Рейтинг: 0 / 0
Временная таблица с заполнением через рекурсивный запрос
    #39999543
Дмитрий86
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
felix_ff, да на терадата, ну там синтаксис очень схож, но если это на по теме, модератор перекинет то в тему "Другие СУБД" или самому создавать там тему?
...
Рейтинг: 0 / 0
Временная таблица с заполнением через рекурсивный запрос
    #39999549
felix_ff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий86,


у Вас несколько странная логика если честно. "похожий" синтаксис не дает его корректным для совершенно другого продукта.


на mssql то что вы хотите выглядело бы так
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
CREATE TABLE #vt_employee
(
   emp_id INT
);

WITH rec_emp (emp_id) AS (
  SELECT emp_id
  FROM Table1
  WHERE emp_id = 10
 	UNION ALL
   SELECT t.emp_id
   FROM Table1 t 
       JOIN rec_emp r ON r.[emp_id] = t.[parent_id]
)
INSERT INTO #vt_employee
select [emp_id] from rec_emp option(maxrecursion 0);
...
Рейтинг: 0 / 0
Временная таблица с заполнением через рекурсивный запрос
    #39999555
Дмитрий86
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
felix_ff, спасибо!
а не подскажете как это будет выглядеть для терадаты?
...
Рейтинг: 0 / 0
Временная таблица с заполнением через рекурсивный запрос
    #39999563
felix_ff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий86
felix_ff, спасибо!
а не подскажете как это будет выглядеть для терадаты?



Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
CREATE VOLATILE TABLE vt_employee(emp_id) AS 
(
   emp_id INTEGER
) ON COMMIT PRESERVE ROWS;

WITH RECURSIVE rec_emp (emp_id) AS (
  SELECT emp_id
  FROM Table1
  WHERE emp_id = 10
 	UNION ALL
   SELECT t.emp_id
   FROM Table1 t, rec_emp r
   WHERE r.emp_id = t.Empid
)
INSERT INTO vt_employee
select emp_id from rec_emp;


...
Рейтинг: 0 / 0
Временная таблица с заполнением через рекурсивный запрос
    #39999617
Дмитрий86
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
felix_ff, благодарю!
Можно еще Вам вопрос задать по поводу макросов в терадате. Поддерживают ли они внутри себя создание временных таблиц? Или есть какие то ограничения? Видел примеры, что внутри макросов создают волатильные таблицы, но у меня макрос с ними не работает. С глобальными темпорари таблицами все отрабатывает, не могу нигде найти точню инфу по этому вопросу, может Вы знаете. Спасибо!
...
Рейтинг: 0 / 0
Временная таблица с заполнением через рекурсивный запрос
    #39999671
felix_ff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий86
felix_ff, благодарю!
Можно еще Вам вопрос задать по поводу макросов в терадате. Поддерживают ли они внутри себя создание временных таблиц? Или есть какие то ограничения? Видел примеры, что внутри макросов создают волатильные таблицы, но у меня макрос с ними не работает. С глобальными темпорари таблицами все отрабатывает, не могу нигде найти точню инфу по этому вопросу, может Вы знаете. Спасибо!



нет не поддерживают.
каждая инструкция ddl в террадате должна быть закомичена, а макрос является или single-statement инструкцией или multi-statement.
у вас не получится в макросе создать волатильную таблицу и потом ее использовать.

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

вообще мне надоело отвечать на оффтоп, создайте тему в правильной ветке, там вам и быстрей помогут и здесь не будет тем не относящихся к другому продукту
...
Рейтинг: 0 / 0
Временная таблица с заполнением через рекурсивный запрос
    #39999703
Дмитрий86
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
felix_ff
Дмитрий86
felix_ff, спасибо!
а не подскажете как это будет выглядеть для терадаты?



Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
CREATE VOLATILE TABLE vt_employee(emp_id) AS 
(
   emp_id INTEGER
) ON COMMIT PRESERVE ROWS;

WITH RECURSIVE rec_emp (emp_id) AS (
  SELECT emp_id
  FROM Table1
  WHERE emp_id = 10
 	UNION ALL
   SELECT t.emp_id
   FROM Table1 t, rec_emp r
   WHERE r.emp_id = t.Empid
)
INSERT INTO vt_employee
select emp_id from rec_emp;




Ругается на синтаксис, походу нельзя писать инсерт после рекурсивного запроса
...
Рейтинг: 0 / 0
Временная таблица с заполнением через рекурсивный запрос
    #39999706
Дмитрий86
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
felix_ff,понял Вас, спасибо!
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Временная таблица с заполнением через рекурсивный запрос
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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