関数pl / sqloracle内の複数の行を保存して返す

マーリー
declare
    type t_trayIds is table of number(38,0) index by binary_integer;
    v_trayIdsTable t_trayIds;
create or replace function F_getTrayIdByDiameter(v_diameterInCm tray.diameterincm%TYPE)   
return t_trayIds
as 
    v_trayIdsTable t_trayIds := null;
begin
    select t.trayid into v_trayIds from tray t 
    where t.diameterincm = v_diameterincm;
    return v_trayIdsTable;
end;

したがって、私が欲しいのは、特定の直径を持つすべてのトレイIDを要求し、それらを配列またはテーブルに格納することです。JavaではArrayListを使用しました。最後にテーブルを返して、結果を別の関数に渡したいと思います。上記のコードは機能していないようです。SQL Developerは、単語で構文エラーを出しますcreate誰かが助けることができますか?

ニコラ

開始セクションが後に続く必要がある宣言セクションと、オブジェクトを作成するためのスタンドアロンステートメントである「作成または置換関数」を混在させているため、コードは失敗します。

PL / SQL表型を宣言して公開する場合は、パッケージ仕様に含める必要があります。これにより、任意の関数で表示できるようになります(ここでは、関数F_getTrayIdByDiameterも宣言して表示します)。

    CREATE OR REPLACE package utils is
        type t_trayIds is table of number(38,0) index by binary_integer;
        function F_getTrayIdByDiameter(v_diameterInCm tray.diameterincm%TYPE) return t_trayIds;
    end utils;
    /

また、SELECTINTO構文を使用することはできません。

colをvarに選択

リストではなく、単一行にのみ使用できます。PL / SQLでは、複数の行を管理する場合は、カーソルを使用する必要があります。したがって、PL / SQL表を作成する場合は、カーソルをフェッチしてリスト(PL / SQL表)を作成できます。だから、あなたのパッケージ本体は、

CREATE OR REPLACE package body utils is
function F_getTrayIdByDiameter(v_diameterInCm tray.diameterincm%TYPE) return t_trayIds is 
    v_trayIdsTable t_trayIds;
    i number := 0;
    cursor c is 
    select t.trayid from tray t 
    where t.diameterincm = v_diameterincm;
begin
    for my_rec in c loop
        v_trayIdsTable(i) := my_rec.trayid;
        i := i + 1;
    end loop;
        
    return v_trayIdsTable;
end;
end utils;
/

次に、リストを別の関数または匿名ブロックで使用できます。たとえば、次のようになります。

declare
  my_result utils.t_trayIds;
begin
  my_result := utils.F_GETTRAYIDBYDIAMETER(20);
  dbms_output.put_line(my_result(0));
end;

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

PL / pgSQL関数から複数の行を返す方法

分類Dev

PL / SQL関数から複数の値を返します

分類Dev

関数PL / SQL ORACLE

分類Dev

PL / SQLORACLEの変数としての列名

分類Dev

単一行のサブクエリは、複数の行のSQLOracleを返します

分類Dev

PL / SQL関数から複数の値を返す

分類Dev

PL / pgSQL関数の動的SELECTINTO

分類Dev

Mysql関数、複数の行を返す

分類Dev

PL / SQL関数whileループは1行のみを返します

分類Dev

PL / pgSQL関数での変数の使用

分類Dev

PL / SQLの複数行の正規表現関数を置き換えます

分類Dev

Python 3:複数の関数を介して変数を返す

分類Dev

plpgsql関数から複数の行を返します

分類Dev

plpgsql関数から複数の行を返します

分類Dev

Postgresql関数は複数の行を返します

分類Dev

複数の関数を実行してそれぞれのリストを並行して返す方法

分類Dev

Plyrを使用して関数から複数の値を返す

分類Dev

関数間のPL \ SQL例外処理

分類Dev

PL / pgSQL関数のINSERTINTOから結果にアクセスして返す

分類Dev

匿名の複数行関数を引数として別の関数に渡す

分類Dev

pl / sql関数-SELECT ... NOT IN()に対して複数のvarchar2値を動的に渡します

分類Dev

Oracle PL / SLQ関数でカーソルを返しましたが、すべての行が返されるわけではありません。Oracle pl / sql関数で1行しか返すことができませんか?

分類Dev

同じPL / SQL関数が2つの異なる値を返します

分類Dev

PL / SQL関数内で更新を実行できますか?

分類Dev

varchar2 /数値を返すPL / SQL関数

分類Dev

CasperJSの関数を使用して、複数レベルのiframe内でリンクを返す

分類Dev

AngularJSを使用してテーブル内の複数の行を繰り返します

分類Dev

Python:関数内の関数内の関数の名前を返します

分類Dev

非同期関数を返すpromise内の複数のresolve()呼び出し

Related 関連記事

  1. 1

    PL / pgSQL関数から複数の行を返す方法

  2. 2

    PL / SQL関数から複数の値を返します

  3. 3

    関数PL / SQL ORACLE

  4. 4

    PL / SQLORACLEの変数としての列名

  5. 5

    単一行のサブクエリは、複数の行のSQLOracleを返します

  6. 6

    PL / SQL関数から複数の値を返す

  7. 7

    PL / pgSQL関数の動的SELECTINTO

  8. 8

    Mysql関数、複数の行を返す

  9. 9

    PL / SQL関数whileループは1行のみを返します

  10. 10

    PL / pgSQL関数での変数の使用

  11. 11

    PL / SQLの複数行の正規表現関数を置き換えます

  12. 12

    Python 3:複数の関数を介して変数を返す

  13. 13

    plpgsql関数から複数の行を返します

  14. 14

    plpgsql関数から複数の行を返します

  15. 15

    Postgresql関数は複数の行を返します

  16. 16

    複数の関数を実行してそれぞれのリストを並行して返す方法

  17. 17

    Plyrを使用して関数から複数の値を返す

  18. 18

    関数間のPL \ SQL例外処理

  19. 19

    PL / pgSQL関数のINSERTINTOから結果にアクセスして返す

  20. 20

    匿名の複数行関数を引数として別の関数に渡す

  21. 21

    pl / sql関数-SELECT ... NOT IN()に対して複数のvarchar2値を動的に渡します

  22. 22

    Oracle PL / SLQ関数でカーソルを返しましたが、すべての行が返されるわけではありません。Oracle pl / sql関数で1行しか返すことができませんか?

  23. 23

    同じPL / SQL関数が2つの異なる値を返します

  24. 24

    PL / SQL関数内で更新を実行できますか?

  25. 25

    varchar2 /数値を返すPL / SQL関数

  26. 26

    CasperJSの関数を使用して、複数レベルのiframe内でリンクを返す

  27. 27

    AngularJSを使用してテーブル内の複数の行を繰り返します

  28. 28

    Python:関数内の関数内の関数の名前を返します

  29. 29

    非同期関数を返すpromise内の複数のresolve()呼び出し

ホットタグ

アーカイブ