我创建了一个临时表并插入到 DB2 ZOS 中,如下所述
CREATE GLOBAL TEMPORARY TABLE tmp2 (col1 INT)
INSERT INTO tmp2 (col1) VALUES (10687);
INSERT INTO tmp2 (col1) VALUES (10689);
INSERT INTO tmp2 (col1) VALUES (10691);
插入的数据没有任何问题,我尝试使用选择查询检索数据,我看不到我插入上述值并获取的任何值。
select * from tmp2
我有较早的SQL Server经验,并运行了以下查询,这些查询没有任何问题。
Drop table #tmp2
CREATE TABLE #tmp2 (col1 INT)
INSERT INTO #tmp2 (col1) VALUES (10687);
INSERT INTO #tmp2 (col1) VALUES (10689);
INSERT INTO #tmp2 (col1) VALUES (10691);
select * from #tmp2
如何查看插入的数据?
查看文档以了解详细信息,有时这比等待答案更快。
当发生 COMMIT 时,CGTT(创建全局临时表(对象与常规表不同 - 如果表上没有打开with hold
游标,它将清空表。如果您为数据库连接启用了自动提交,则结果将是您的 CGTT 表可能显示为空。
如果您想更好地控制提交行为(以及回滚行为和日志记录选项等(,您可以考虑使用 DGTT(声明全局临时表(,因为该语法允许您使用其他非默认选项,如on commit preserve rows
和on rollback preserve rows
。但是一个DGTT对象有更多的限制,包括它的限定符必须始终是SESSION
的,并且它的定义没有被编目,所以表对任何其他会话都是不可见的。
感谢所有回复。
下面是一组查询,实际上我一直在寻找
DECLARE GLOBAL TEMPORARY TABLE SESSION.tmp2 (col1 INTEGER)
CCSID EBCDIC ON COMMIT PRESERVE ROWS;
INSERT INTO SESSION.tmp2 (col1) VALUES (10687);
INSERT INTO SESSION.tmp2 (col1) VALUES (10689);
INSERT INTO SESSION.tmp2 (col1) VALUES (10691);
select * from SESSION.tmp2;