問題:您想臨時儲存 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 之前 ... 閱讀更多