sql - DB2 SQL 语句 - 是否可以 A) 声明一个临时表 B) 用数据填充它然后 C) 对它运行一个 select 语句?
问题描述
我对 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;
解决方案
如果您查看DECLARE GLOBAL TEMPORARY TABLE语句的语法图,您可能会注意到以下块:
.-ON COMMIT DELETE ROWS---.
--●--+-------------------------+--●----------------------------
'-ON COMMIT PRESERVE ROWS-'
这意味着这ON COMMIT DELETE ROWS
是默认行为。如果您在autocommit
打开模式的情况下发出语句,则commit
在每条语句之后自动发出的语句会隐式地删除,这会删除 DGTT 中的所有行。
如果您希望 DB2 在提交时不删除 DGTT 中的行,则必须ON COMMIT PRESERVE ROWS
在 DGTT 声明中显式指定子句。
推荐阅读
- dialogflow-es - 如何让 Dialogflow 生成随机数?
- python - 在 r markdown 中运行 python 代码时无法编织
- c - C程序打印意外输出
- javascript - 如何从 JSON 错误消息中提取错误代码
- html - 如何在关键帧中实现鼠标移出的反向动画
- python - Asgiref 的 sync_to_async 和 Pycharm - 修复 Pycharm 的错误类型警告
- java - 当事务方法调用另一个类的事务方法时尝试捕获不起作用
- python - 修改 Poetry 的虚拟环境 PYTHONPATH
- javascript - 如何在 Javascript 中使用循环(forEach、map 等)将数组转换为对象
- node.js - NodeJs,Axios:变量的值未随 xhr 请求的响应而更新