我对DB2数据库具有只读访问权限,我想创建一个仅在SQL中存在的“运行中/运行中”或临时表,然后用值填充它,然后将结果与现有表进行比较
到目前为止,我正在尝试验证前提,并进行以下查询编译,但是无法使用select语句进行任何处理。
有人可以帮助我解决我做错的事情,或者就我尝试做的事情提供建议吗? (或者也许是一种更好的做事方式)
谢谢 贾斯汀
--Create a table that only exists within the query
DECLARE GLOBAL TEMPORARY TABLE SESSION.TEMPEVENT (EVENT_TYPE INTEGER);
--Insert a value into the temporary table
INSERT INTO SESSION.TEMPEVENT (EVENT_TYPE) VALUES ('1');
--Select all values from the temporary table
SELECT * FROM SESSION.TEMPEVENT;
--Drop the table so the query can be run again
DROP TABLE SESSION.TEMPEVENT;
答案 0 :(得分:1)
如果查看DECLARE GLOBAL TEMPORARY TABLE语句的语法图,您可能会注意到以下块:
.-ON COMMIT DELETE ROWS---.
--●--+-------------------------+--●----------------------------
'-ON COMMIT PRESERVE ROWS-'
这意味着ON COMMIT DELETE ROWS
是默认行为。如果在打开autocommit
模式的情况下发布语句,则commit
语句会隐式地在每个语句之后自动发布,这会删除DGTT中的所有行。
如果希望DB2在提交时不删除DGTT中的行,则必须在DGTT声明中明确指定ON COMMIT PRESERVE ROWS
子句。