在Teradata Ansi会话模式下执行

时间:2014-10-10 06:28:35

标签: commit teradata

我需要从我在ANSI会话模式下连接的Teradata中提取数据。 Teradata版本低于14,因此使用' WITH'不支持多个派生表格。条款。由于这个限制,我被迫创建一个临时表,我加载数据,并希望使用临时表中的数据。但是,我得到了

  

3722错误:只有一个COMMIT WORK或null语句在a之后是合法的   DDL声明

我尝试了 COMMIT COMMIT WORK SELECT null ,所有这些都会引发同样的错误。请注意,我不能使用BT; ET;因为我不在TERADATA会议上。并且ANSI会话不支持它。

这是我想要使用的查询的简化版本。

CREATE MULTISET VOLATILE TABLE temp_table AS
(SELECT col FROM my_table)
WITH DATA
ON COMMIT PRESERVE ROWS;
COMMIT; -- COMMIT; / COMMIT;/COMMIT WORK;/;
SELECT * FROM temp_table;

关于如何让这个工作的任何想法?

P.S:是的,我必须在单个请求中拥有CREATE AND SELECT语句。由于我们设置ETL过程的方式,这是我们的限制。

1 个答案:

答案 0 :(得分:0)

如果有任何方法可以将会话模式从ANSI更改为TERADATA,那将是最简单的解决方案。

否则,您可以尝试将其拆分为CREATE TABLE ... WITH NO DATA语句,COMMIT WORK和INSERT语句。

PS:您没有提到数据分布,但是如果所选表的分布不佳,我将创建没有主索引的临时表。