パッケージでハードコーディングされた日付値を宣言できるのに、クエリから値を割り当てられない理由を誰かが理解するのを手伝ってくれますか? ハードコーディングされた値の宣言を示す多くの例 (参考書を含む) を見てきましたが、クエリを介して変数に値を代入する例を見つけることができません。
これは許可されています:
create or replace package body PACKAGE_NAME AS
tDate DATE := '2012-05-30';
-- ...procedures follow
これは許可されています:
create or replace package body PACKAGE_NAME AS
tDate DATE := sysdate;
これは許可されていません:
create or replace package body PACKAGE_NAME AS
tDate DATE := select MAX(date_) from Table_Name;
私はいくつかの方法を試しましたが、うまくいかなくても大丈夫です。手順自体で必要に応じて使用できます。しかし、なぜこのように値を割り当てることができないのか知りたいtDate
ですか? 具体的なエラーは次のとおりです。
期待しているときにシンボル「SELECT」に遭遇しました....
ストアド プロシージャでクエリを介して割り当てられた変数値を取得できますが、同じプロセスがパッケージ本体では機能しないようです。
PROCEDURE Proc_Name IS
tDate Date;
BEGIN
SELECT MAX(date_) into tDate from Table_Name;