/*
DB2 CTE 沒有辦法使用 Set or Select into 將結果設給變數,
Oracle CTE 卻可以做到.
implement CTE,Recursive SQL in the Scenario:
寫一段 PL/SQL, 取得系統日期第三季的起始日及迄日,並將值設給變數
*/
/* PL/SQL 內容如下: */
DECLARE
vSTARTDT DATE;
vENDDT DATE;
BEGIN
WITH TEMP AS
(
SELECT STARTDT + LEVEL COL1
FROM (SELECT TO_DATE(EXTRACT(YEAR FROM SYSDATE) ||
'0101','YYYYMMDD') STARTDT
FROM DUAL) A1
CONNECT BY LEVEL <= 365
)
SELECT MIN(COL1),MAX(COL1)
INTO vSTARTDT,vENDDT
FROM TEMP
WHERE EXTRACT(YEAR FROM COL1) =
EXTRACT(YEAR FROM SYSDATE)
AND TO_CHAR(COL1,'Q') = 3;
DBMS_OUTPUT.PUT_LINE(vSTARTDT);
DBMS_OUTPUT.PUT_LINE(vENDDT);
END;
/
/* 執行後傳回結果 */
01-7月 -08
30-9月 -08
已順利完成 PL/SQL 程序.