パイプライン関数(複数結合テーブル)でORACLE式のタイプが間違っています

セザールベガ

複数のレコードを取得するパイプライン関数を使用してOracleパッケージを作成しています。クエリは複数の結合されたテーブルに関するものであり、別のテーブルに保存されます。タイプレコードタイプレコードテーブルタイプを作成してから、クエリを使用してパイプライン化された関数ですが、パッケージをコンパイルすると、「式のタイプが間違っています」というエラーが表示されます

定義パッケージは次のとおりです。

CREATE OR REPLACE PACKAGE MYPACKAGE_PKG AS

  TYPE GLD_R IS RECORD (
    ID        NUMBER,
    PRCCVE  NUMBER(7,0),        
    LOTCVE  NUMBER(7,0),        
    EPCSEQ  NUMBER(18,0),       
    EPCBNK  CHAR(3)
  );

  TYPE GLD_T IS TABLE OF GLD_R;    

  FUNCTION MY_FUNCTION(_NUM NUMBER) RETURN GLD_T PIPELINED;

END;

ボディパッケージは次のとおりです。

CREATE OR REPLACE PACKAGE BODY MYPACKAGE_PKG AS

  FUNCTION MY_FUNCTION(_NUM NUMBER) RETURN GLD_T PIPELINED 
  AS
    CURSOR T_CUR IS 
      SELECT 
        T1.ID,
        T2.COLUMN01,
        T2.COLUMN02,
        T3.COLUMN01,
        T3.COLUMN02
      FROM 
        TABLE01 T1
        INNER JOIN TABLE02 T2 ON 
          T1.COLUMN03 = T2.ID
        INNER JOIN TABLE03 T3 ON
          T1.COLUMN04 = T2.ID
      WHERE 
        T1.COLUMN01 = _NUM
  BEGIN
    FOR REC IN T_CUR LOOP
      PIPE ROW (REC);
    END LOOP;
  END MY_FUNCTION;

END;

あなたは私に言うことができます、私は何が間違っているのですか?

リトルフット

次のようになります。

最初のテーブル(コンパイルが失敗しないように):

SQL> create table table01 (id number,column01 number, column03 number, column04 number);

Table created.

SQL> create table table02 (id number, column01 number, column02 number);

Table created.

SQL> create table table03 (id number, column01 number, column02 number);

Table created.

パッケージ仕様:

SQL> CREATE OR REPLACE PACKAGE MYPACKAGE_PKG AS
  2
  3    TYPE GLD_R IS RECORD (
  4      ID        NUMBER,
  5      PRCCVE  NUMBER(7,0),
  6      LOTCVE  NUMBER(7,0),
  7      EPCSEQ  NUMBER(18,0),
  8      EPCBNK  CHAR(3)
  9    );
 10
 11    TYPE GLD_T IS TABLE OF GLD_R;
 12
 13    FUNCTION MY_FUNCTION(p_NUM NUMBER) RETURN GLD_T PIPELINED;
 14
 15  END;
 16  /

Package created.

パッケージ本体:

SQL> CREATE OR REPLACE PACKAGE BODY MYPACKAGE_PKG AS
  2
  3    FUNCTION MY_FUNCTION(p_NUM NUMBER) RETURN GLD_T PIPELINED
  4    AS
  5      CURSOR T_CUR IS
  6        SELECT
  7          T1.ID,
  8          T2.COLUMN01 t2c01,
  9          T2.COLUMN02 t2c02,
 10          T3.COLUMN01 t3c01,
 11          T3.COLUMN02 t3c02
 12        FROM
 13          TABLE01 T1
 14          INNER JOIN TABLE02 T2 ON
 15            T1.COLUMN03 = T2.ID
 16          INNER JOIN TABLE03 T3 ON
 17            T1.COLUMN04 = t3.id   -- not T2.ID
 18        WHERE
 19          T1.COLUMN01 = p_NUM;
 20
 21          myrec gld_r;
 22    BEGIN
 23      FOR REC IN T_CUR LOOP
 24        myrec.id := rec.id;
 25        myrec.prccve := rec.t2c01;
 26        myrec.lotcve := rec.t2c02;
 27        myrec.epcseq := rec.t3c01;
 28        myrec.epcbnk := rec.t3c02;
 29        PIPE ROW (myrec);
 30      END LOOP;
 31    END MY_FUNCTION;
 32
 33  END;
 34  /

Package body created.

SQL>

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

PL / SQLコンパイルエラー-PLS-00382:式のタイプが間違っています

分類Dev

Oracle- '式が間違ったタイプです'パッケージ内のレコードタイプのテーブルを返します

分類Dev

コンパイラエラーエラーで失敗した場合にテンプレート化:テンプレート引数の数が間違っています(2、3である必要があります)

分類Dev

Oracleプロシージャ - PLS-00306: 引数の数またはタイプが間違っています

分類Dev

変更された `Chars`イテレータを使用する場合のライフタイムパラメータの数が間違っています

分類Dev

第1引数のタイプが間違っています

分類Dev

PLS-00306でのCharOutパラメータエラーを使用したOracleストアドプロシージャの呼び出し:呼び出しでの引数の数またはタイプが間違っています

分類Dev

このプログラムを実行しようとしていますが、「コンパイルエラー、引数の数が間違っている、またはプロパティの割り当てが無効です」というエラーが発生します

分類Dev

2017-03-22タイムスタンプでphp日付関数が間違っています

分類Dev

この標準は、このメンバー関数へのポインタ型テンプレートパラメータについて何と言っていますか?私のコードは間違っていますか、それともMSVS 16.6はバグがありますか?

分類Dev

クエリ結果でのHibernate結合継承のタイプが間違っています

分類Dev

Azureパイプライン:YAMLビルドパイプラインの読み込み中にエラーが発生しました:セグメントの数が間違っています

分類Dev

JSX要素タイプ「xxx」はJSX要素のコンストラクター関数ではありません。プロパティ「yyy」はタイプ「xxx」で保護されていますが、タイプ「ElementClass」ではパブリックです

分類Dev

Rで複数の変数にわたってテーブル関数を実行し、関数を使用して結果を新しいデータセットにコンパイルするにはどうすればよいですか?

分類Dev

'AppRoutingModule'関数式のテンプレートコンパイル中のエラーはデコレータでサポートされていません

分類Dev

setq: タイプ引数が間違っています: listp 1

分類Dev

Oracleパイプラインテーブル関数と結果をOracleテーブルに挿入

分類Dev

パンダで変数の作成中にエラーが発生しました-渡されたアイテムの数が間違っています

分類Dev

DbgHelp:x64で値渡しシンボルの場合、関数パラメーターのアドレスが間違っています

分類Dev

エラー:関数のタイプが競合しています。ヘッダーファイルで関数が宣言されています

分類Dev

引数の数またはタイプが間違っています。PL/ SQLでエラーが発生します

分類Dev

SQLパラメータを使用すると、「引数のタイプが間違っています」が返されます

分類Dev

Azureパイプラインのdockerfileのコピーコマンドのパスが間違っています

分類Dev

Azureパイプラインの複数のプール間でステップが重複しないようにする

分類Dev

タイプスクリプトの関数定義が間違っています

分類Dev

Objective-Cでは、fabsf()の結果タイプが間違っています

分類Dev

ランタイムエラー3001 '引数のタイプが間違っているか、許容範囲外です...'

分類Dev

json.netでの逆シリアル化により、タイプが間違っている場合はプロパティを無視します

分類Dev

アレイプロトタイプリピーター関数の動作が間違っている

Related 関連記事

  1. 1

    PL / SQLコンパイルエラー-PLS-00382:式のタイプが間違っています

  2. 2

    Oracle- '式が間違ったタイプです'パッケージ内のレコードタイプのテーブルを返します

  3. 3

    コンパイラエラーエラーで失敗した場合にテンプレート化:テンプレート引数の数が間違っています(2、3である必要があります)

  4. 4

    Oracleプロシージャ - PLS-00306: 引数の数またはタイプが間違っています

  5. 5

    変更された `Chars`イテレータを使用する場合のライフタイムパラメータの数が間違っています

  6. 6

    第1引数のタイプが間違っています

  7. 7

    PLS-00306でのCharOutパラメータエラーを使用したOracleストアドプロシージャの呼び出し:呼び出しでの引数の数またはタイプが間違っています

  8. 8

    このプログラムを実行しようとしていますが、「コンパイルエラー、引数の数が間違っている、またはプロパティの割り当てが無効です」というエラーが発生します

  9. 9

    2017-03-22タイムスタンプでphp日付関数が間違っています

  10. 10

    この標準は、このメンバー関数へのポインタ型テンプレートパラメータについて何と言っていますか?私のコードは間違っていますか、それともMSVS 16.6はバグがありますか?

  11. 11

    クエリ結果でのHibernate結合継承のタイプが間違っています

  12. 12

    Azureパイプライン:YAMLビルドパイプラインの読み込み中にエラーが発生しました:セグメントの数が間違っています

  13. 13

    JSX要素タイプ「xxx」はJSX要素のコンストラクター関数ではありません。プロパティ「yyy」はタイプ「xxx」で保護されていますが、タイプ「ElementClass」ではパブリックです

  14. 14

    Rで複数の変数にわたってテーブル関数を実行し、関数を使用して結果を新しいデータセットにコンパイルするにはどうすればよいですか?

  15. 15

    'AppRoutingModule'関数式のテンプレートコンパイル中のエラーはデコレータでサポートされていません

  16. 16

    setq: タイプ引数が間違っています: listp 1

  17. 17

    Oracleパイプラインテーブル関数と結果をOracleテーブルに挿入

  18. 18

    パンダで変数の作成中にエラーが発生しました-渡されたアイテムの数が間違っています

  19. 19

    DbgHelp:x64で値渡しシンボルの場合、関数パラメーターのアドレスが間違っています

  20. 20

    エラー:関数のタイプが競合しています。ヘッダーファイルで関数が宣言されています

  21. 21

    引数の数またはタイプが間違っています。PL/ SQLでエラーが発生します

  22. 22

    SQLパラメータを使用すると、「引数のタイプが間違っています」が返されます

  23. 23

    Azureパイプラインのdockerfileのコピーコマンドのパスが間違っています

  24. 24

    Azureパイプラインの複数のプール間でステップが重複しないようにする

  25. 25

    タイプスクリプトの関数定義が間違っています

  26. 26

    Objective-Cでは、fabsf()の結果タイプが間違っています

  27. 27

    ランタイムエラー3001 '引数のタイプが間違っているか、許容範囲外です...'

  28. 28

    json.netでの逆シリアル化により、タイプが間違っている場合はプロパティを無視します

  29. 29

    アレイプロトタイプリピーター関数の動作が間違っている

ホットタグ

アーカイブ