Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Создание VOLATILE таблиц в Хранимой процедуре (Teradata) / 8 сообщений из 8, страница 1 из 1
07.11.2019, 10:14
    #39886077
Ольга Семенова
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание VOLATILE таблиц в Хранимой процедуре (Teradata)
Добрый день!
Есть скрипт на создание хранимки и в этом скрипте в тексте хранимки создается 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
07.11.2019, 10:39
    #39886099
Ольга Семенова
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание VOLATILE таблиц в Хранимой процедуре (Teradata)
Причем если заранее создать 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
07.11.2019, 13:46
    #39886196
Бумбараш
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание VOLATILE таблиц в Хранимой процедуре (Teradata)
не использовать volatile table в процедуре
...
Рейтинг: 0 / 0
07.11.2019, 15:39
    #39886273
Ольга Семенова
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание VOLATILE таблиц в Хранимой процедуре (Teradata)
Бумбараш
не использовать volatile table в процедуре


без них никак нельзя. Вся реализация на них сделана уже.
...
Рейтинг: 0 / 0
09.11.2019, 17:55
    #39887077
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание VOLATILE таблиц в Хранимой процедуре (Teradata)
Ольга Семенова
Код: 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
11.11.2019, 19:40
    #39887717
Ольга Семенова
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание VOLATILE таблиц в Хранимой процедуре (Teradata)
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
11.11.2019, 19:47
    #39887723
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание VOLATILE таблиц в Хранимой процедуре (Teradata)
Ольга Семенова,

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

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


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



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


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