powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Создание VOLATILE таблиц в Хранимой процедуре (Teradata)
8 сообщений из 8, страница 1 из 1
Создание VOLATILE таблиц в Хранимой процедуре (Teradata)
    #39886077
Ольга Семенова
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день!
Есть скрипт на создание хранимки и в этом скрипте в тексте хранимки создается VOLATILE TABLE .

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
REPLACE PROCEDURE MY_SPACE.TEST_PROC(report DATE)
SQL SECURITY INVOKER
BEGIN

CREATE MULTISET VOLATILE TABLE TEMP_TABLE,
	NO FALLBACK ,
	NO BEFORE JOURNAL,
	NO AFTER JOURNAL,
	CHECKSUM = DEFAULT,
	DEFAULT MERGEBLOCKRATIO AS 
(SELECT 
	MY_SPACE.FILL_TABLE.ID ,
	MY_SPACE.FILL_TABLE.DATA
	WHERE 1=0) 
WITH NO DATA
PRIMARY INDEX(ID)
ON COMMIT PRESERVE ROWS;

INSERT INTO TEMP_TABLE (ID, DATA)
SELECT ID, DATA	
FROM MY_SPACE.FILL_TABLE 
WHERE REPORT_DATE=:report 

REPLACE VIEW MY_SPACE.TEST_VIEW AS
LOCK ROW FOR ACCESS
SELECT * FROM TEMP_TABLE;

DROP TABLE TEMP_TABLE;

END;



Но процедуру не получается запустить, так как пишет, что не найдена таблица TEMP_TABLE
SPL5000:W(L69), E(3807):Object 'TEMP_TABLE' does not exist.

Как тогда создавать новые или измененные Хранимки с использованием VOLATILE TABLE ?
...
Рейтинг: 0 / 0
Создание VOLATILE таблиц в Хранимой процедуре (Teradata)
    #39886099
Ольга Семенова
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Причем если заранее создать VOLATILE TABLE перед созданием Хранимки то ругается что Таблица такая есть!

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
CREATE MULTISET VOLATILE TABLE TEMP_TABLE,
	NO FALLBACK ,
	NO BEFORE JOURNAL,
	NO AFTER JOURNAL,
	CHECKSUM = DEFAULT,
	DEFAULT MERGEBLOCKRATIO 
(ID  DECIMAL(12,0),
DATA VARCHAR(100) CHARACTER SET UNICODE CASESPECIFIC) 
PRIMARY INDEX(ID)
ON COMMIT PRESERVE ROWS;
...
Рейтинг: 0 / 0
Создание VOLATILE таблиц в Хранимой процедуре (Teradata)
    #39886196
Бумбараш
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не использовать volatile table в процедуре
...
Рейтинг: 0 / 0
Создание VOLATILE таблиц в Хранимой процедуре (Teradata)
    #39886273
Ольга Семенова
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Бумбараш
не использовать volatile table в процедуре


без них никак нельзя. Вся реализация на них сделана уже.
...
Рейтинг: 0 / 0
Создание VOLATILE таблиц в Хранимой процедуре (Teradata)
    #39887077
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ольга Семенова
Код: sql
1.
2.
3.
4.
5.
REPLACE VIEW MY_SPACE.TEST_VIEW AS
LOCK ROW FOR ACCESS
SELECT * FROM TEMP_TABLE;

DROP TABLE TEMP_TABLE;

Мне одному это сочетание команд кажется бредом?
Ольга Семенова
Код: sql
1.
2.
3.
4.
SELECT 
	MY_SPACE.FILL_TABLE.ID ,
	MY_SPACE.FILL_TABLE.DATA
	WHERE 1=0

Я понимаю, что Терадата так позволяет, но уж хотя бы для приличия секцию FROM написали бы.
Ольга Семенова
(L69)
Какая строка в вашем коде 69-ая по счету?
...
Рейтинг: 0 / 0
Создание VOLATILE таблиц в Хранимой процедуре (Teradata)
    #39887717
Ольга Семенова
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoft, добрый день.
69 строка это та где указано в конце процедуры удаление волатильной таблицы. В прототипе хранимке она 25-я

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
REPLACE PROCEDURE MY_SPACE.TEST_PROC(report DATE)
SQL SECURITY INVOKER
BEGIN

CREATE MULTISET VOLATILE TABLE TEMP_TABLE,
	NO FALLBACK ,
	NO BEFORE JOURNAL,
	NO AFTER JOURNAL,
	CHECKSUM = DEFAULT,
	DEFAULT MERGEBLOCKRATIO AS 
(SELECT 
	MY_SPACE.FILL_TABLE.ID,
	MY_SPACE.FILL_TABLE.DATA
	FROM MY_SPACE.FILL_TABLE
	WHERE 1=0) 
WITH NO DATA
PRIMARY INDEX(ID)
ON COMMIT PRESERVE ROWS;

INSERT INTO TEMP_TABLE (ID, DATA)
SELECT ID, DATA	
FROM MY_SPACE.FILL_TABLE 
WHERE REPORT_DATE=:report 

DROP TABLE TEMP_TABLE;

END;
...
Рейтинг: 0 / 0
Создание VOLATILE таблиц в Хранимой процедуре (Teradata)
    #39887723
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ольга Семенова,

Новый код работает?
Что планировалось делать с содержимым TEMP_TABLE?
...
Рейтинг: 0 / 0
Создание VOLATILE таблиц в Хранимой процедуре (Teradata)
    #39888200
Ольга Семенова
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoft
Ольга Семенова,

Новый код работает?
Что планировалось делать с содержимым TEMP_TABLE?


нет не компилируется процедура. Я же писала. что ругается на отсутствие таблицы вот в этой строке
Код: sql
1.
DROP TABLE TEMP_TABLE;



таких промежуточных темповых таблиц много. Они предназначены для промежуточного агрегирония и расчета. А в итоге из них инсертится обычная физическая таблица. Она и является выходной таблице хранимки
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Создание VOLATILE таблиц в Хранимой процедуре (Teradata)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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