INに新しい値を割り当てる私は手順は以下のように定義している。これらの方法で実行することができOracleのPL/SQLは:
CREATE OR REPLACE PROCEDURE foo (
AS_OF_DATE_IN IN DATE DEFAULT TRUNC(sysdate)-1
) AS ...
:私は何をしたいか
-- passes '11-NOV-2011'
exec foo('11-NOV-2011');
--set DEFAULT value (yesterday's date)
exec foo();
--makes things more difficult, as default value isn't set
exec foo(NULL);
:
AS_OF_DATE_IN:=NVL(AS_OF_DATE_IN, TRUNC(sysdate)-1);
ですが、再割り当てエラーが発生します。
AS_OF_DATE_INのすべての用途をNVL()でラップする以外に、この状況を処理するための効率的な方法はありますか?
**編集** 私はかなりばかげた過ちを犯しました。私は手続きを書いています。機能ではありません。このプロシージャは値を戻しません。
私は 'あなたが意味するものと仮定しています:あなたの変数宣言で='ないdefaultを。 'v_as_of_date DATE:= nvl(as_of_date_in、trunc(sysdate)-1)' –
それは主に怠惰なコピーですが、 'DEFAULT'はうまく動作します。問題は、 'AS'の前に' RETURN'節がないことです。 –
うわー!変数宣言で 'DEFAULT'を使うことはできませんでした。毎日何か新しいことを学ぶ。 –