0
2つのフィールドを持つコレクションを作成し、パラメータとしてそのコレクションのタイプの変数を持つプロシージャを作成する必要があります。たとえば、列の場合いくつかの列を持つコレクションを定義する
TYPE an_array IS VARRAY(10) OF varchar2(20);
::私が唯一持っている場合 は、どのように私は2つのフィールドを持つコレクションを作成することができ、ID、名前、 (挿入方法は分かりません)。
その後、私は、プロシージャを作成する必要が
CREATE OR REPLACE PROCEDURE test_proc (p_array an_array) AS
しかし、私は、この手順で何かをする私の列を使用する必要があります。 例として、テーブルemployee(id number、name varchar2(20))を考えます。あなたがレコードのコレクションを使用することができます
CREATE OR REPLACE PROCEDURE test_proc (p_array an_array) AS
CURSOR cs IS select * from employees;
v_row employees%ROWTYPE;
BEGIN
OPEN cs;
LOOP
FETCH cs into v_row ;
EXIT WHEN cs%NOTFOUND;
IF (mod (v_row.id,2) = 0) then
THE ID FIELD FROM MY COLLETION := v_row.id;
THE NAME FIELD FROM MY COLLECTION := v_row.name;
END LOOP;
CLOSE cs;
END;
`
さてさて、その後私は、プロシージャを宣言するだろうかのような
何か?私はレコードを匿名ブロックで宣言しなければならないので、そのコレクションを外部から取得する方法は? – lexraid
匿名ブロックで必要とするタイプを「宣言する」必要がある理由を明確に理解できません。可視性の範囲はどうですか?型を匿名ブロックで宣言すると、そのブロックにもプロシージャーが宣言されています。 – Seyran
ええ、そうです、私は同じブロックでそれらを宣言しなければなりません、ありがとう。 – lexraid