sql >> データベース >  >> RDS >> Oracle

PLS-00382:関数を実行し、returntypeを変数に入れようとすると、式の型が正しくありません

    レコードタイプ、コレクション/テーブルタイプ、および関数をすべて同じパッケージ内で宣言しています。

    関数を呼び出すときは、そのパッケージから同じタイプを使用する必要があります。

    しかし、そうではありません。フィールドとデータ型の構造は同じですが、Oracleに関する限り同じではありません。オラクルはそれを正確に知る必要があります 同じタイプが使用されていますが、その理由の1つは、オブジェクト間の依存関係を追跡できるようにするためです。

    匿名ブロックは、独自の(類似しているが競合する)タイプを宣言するのではなく、パッケージタイプを参照する必要があります:

    DECLARE
        managers hr_package.managers_table_type;
    BEGIN
        managers := hr_package.managers_multiple_departments;
    END;
    

    ボーナスとして、タイピングがはるかに少なくて済み、重複するタイプを管理する必要がないことを意味します。

    ただし、型宣言はパッケージ仕様に含まれている必要があることも意味します。もちろん、これは、一般に公開したいものすべてに当てはまります。




    1. ボリュームを使用してドッキングされたpostgresデータベースにデータを永続化する方法

    2. コードでは非常に遅いが、SSMSでは速いクエリ

    3. 後ですばやくアクセスできるように年次集計データを収集する

    4. Count()で条件を指定することはできますか?