问题:您想临时存储 SQL 结果。解决方案我们可以使用 CREATE GLOBAL TEMPORARY TABLE 语句创建一个表,该表临时存储会话的数据。此外,您可以指定是在会话期间保留临时表数据还是在事务提交后保留。我们还可以使用 ON COMMIT PRESERVE ROWS 子句来指定在用户会话结束时删除数据。示例CREATE GLOBAL TEMPORARY TABLE tmp_players ON COMMIT PRESERVE ROWS AS SELECT * FROM players WHERE coach_id IS NOT NULL;全局临时表存储仅在用户会话期间存在的会话私有数据 ... 阅读更多
问题:您想在 Oracle 中使用 WITH 子句定义函数。解决方案从 Oracle 数据库 12.1 开始,您可以在 SELECT 语句出现的同一 SQL 语句中定义函数和过程。这允许在 PL/SQL 和 SQL 引擎之间进行上下文切换,允许两个步骤都在 SQL 引擎中发生,从而提高性能。函数或过程需要使用 WITH 子句定义。请记住,在 Oracle 平台的早期版本中,只有子查询可以在 WITH 子句中定义。示例WITH FUNCTION func_amount(p_emailid IN VARCHAR2) RETURN NUMBER IS l_amt ... 阅读更多
问题:您想使用日期时间函数来提取或处理日期时间。解决方案ADD_MONTHS()ADD_MONTHS(x, y) 返回将 y 个月添加到 x 的结果。如果 y 为负数,则从 x 中减去 y 个月示例-- 添加 12 个月 SELECT ADD_MONTHS('01-JAN-2020', 12) FROM dual;输出-- 01/JAN/21示例-- 减去 12 个月 SELECT ADD_MONTHS('01-JAN-2020', -12) FROM dual;输出-- 01/JAN/21我们可以向 ADD_MONTHS() 函数提供时间和日期。示例SELECT ADD_MONTHS(TO_DATE('01-JAN-2020 01:01:01', 'DD-MON-YYYY HH24:MI:SS'), 2) FROM dual;输出-- 01/MAR/20LAST_DAY()LAST_DAY(x) 返回 x 的月份部分的最后一天的日期。示例SELECT LAST_DAY('01-JAN-2020') FROM dual;输出-- 31/JAN/20MONTHS_BETWEEN()MONTHS_BETWEEN(x, y) 返回 x 和 y 之间的月数。如果 x 发生在 y 之前 ... 阅读更多