関数の作成または置換get_weekly_times(i_ksrq IN DATE、i_jsrq IN DATE)
戻り番号は決定的です
/ **
*開始日と終了日を指定して、週数を取得します(クロス イヤーをサポート)
*毎週:月曜日から日曜日
*
*関数に決定論を追加します。SQLの実行中に、同じ入力パラメーターに対して、関数は次の値を返します。同じ値、dbは自動的にそれをキャッシュします。
*
* /
v_dsdez_zrDATE;-最後から2番目の週の
日曜日v_zsNUMBER;-週番号
v_ksrq DATE DEFAULT trunc(i_ksrq);-時間、分、秒を
削除しますv_jsrq DATE DEFAULT trunc(i_jsrq);-時間、分、秒を 削除します
BEGIN
v_dsdez_zr:= trunc(v_jsrq、 'IW')-1;
SELECT COUNT( *)
INTO v_zs
(SELECT v_ksrq + rn last_zr
FROM(SELECT LEVEL-1 rn
FROM dual
CONNECT BY LEVEL <= v_dsdez_zr-v_ksrq + 1)
WHERE to_char(v_ksrq + rn、 'd')= '1'-日付間隔日曜日(開始 日— —最後から2番目の週の日曜日)
UNION
SELECT trunc(v_jsrq、 'IW')+ 6 last_zr
FROM dual--終了日が配置されている曜日
);
dbms_output.put_line( '開始日:' | | v_ksrq || '、終了日:' || v_jsrq ||
'、週番号を返します: '|| v_zs);
RETURN v_zs;
END get_weekly_times;