PL / SQL収集メソッドDELETEの後、OracleデータベースのEXTENDプロシージャはリストの2番目のプロシージャです。私たちはこの手順を何度も使用しましたが、詳細に調べる機会はありませんでした。そのため、ブログ全体をこの収集方法に専念させることにしました。だから、座ってブログを楽しんでください。
PL / SQLを初めて使用し、プロシージャとは何かがわからない場合は、チュートリアルを用意しています。ここをクリックして、OracleDatabaseのPL/SQLプロシージャについてすべて学習してください。
PL / SQLコレクション・メソッドEXTENDとは何ですか?
DELETEと同様に、コレクション・メソッドEXTENDは、コレクションに要素を追加するために使用されるオーバーロードされたPL/SQLプロシージャです。
Oracle DatabaseでEXTENDプロシージャを呼び出す方法はいくつありますか?
PL/SQLコレクションプロシージャはオーバーロードされたプロシージャです。したがって、これは同じプロシージャをさまざまな方法で呼び出すことを意味します。収集手順EXTENDを呼び出すためのこれらのさまざまな方法は、次のとおりです–
- 拡張:引数なしでプロシージャ呼び出しを拡張します。
PL/SQLコレクションプロシージャExtendを引数なしで呼び出すと追加されます 単一のNULL要素 コレクションに。
- Extend(n):1つの引数を使用してプロシージャ呼び出しを拡張します。
収集プロシージャ1つの引数で拡張プロシージャの引数として指定したNULL要素の数を追加します 。ただし、引数は有効な整数値でなければならないことに注意してください。
- Extend(n、v):2つの引数を使用してプロシージャ呼び出しを拡張します。
この場合、最初の引数は要素の数を示します コレクションに追加されます。さらにt 2番目の引数はインデックス番号です。 さらに、その値がコピーされ、コレクションの新しく追加された各要素に割り当てられます。この形式のEXTENDは、「null以外の要素」を含むコレクションに必要です。
3種類のコレクションすべてでPL/SQLコレクションメソッドEXTENDを使用できますか?
いいえ、コレクションメソッドEXTENDは、ネストされたテーブルとVARRAYのコレクションにのみ適用できます。さらに、EXTENDはコレクションの連想配列では使用できません。
Oracleデータベースの収集メソッドEXTENDプロシージャの仕様を教えてください。
もちろん! PL /SQLコレクションメソッドEXTENDのオーバーロードされた仕様は次のとおりです—
1つの引数を持つEXTENDプロシージャ:
PROCEDURE EXTEND (n pls_integer := 1);
2つの引数を持つ収集メソッドEXTEND:
PROCEDURE EXTEND (n pls_integer, v pls_integer);
コードで収集メソッドEXTENDを使用する必要があるのはいつですか?
十分な数の要素で初期化されていないコレクション(ネストされたテーブルまたはVARRAYのいずれか)がコードにある場合。その場合、最初にPL/SQLコレクションメソッドEXTENDを使用する必要があります。
PL / SQLコレクションのメソッドEXTENDの要件は何ですか?
宣言、定義、および初期化は、OracleDatabaseでコレクションを操作するときに実行する必要がある3つのステップです。ただし、データをインデックスに格納する前に、そのためのメモリスロットを作成する必要があります。したがって、PL / SQLコレクション・プロシージャEXTENDは、そのデータ用のメモリ・スロットを作成するのに役立ちます。
コレクションの最後を削除またはトリミングした場合はどうなりますか?
その場合、PL / SQLコレクション・メソッドEXTENDは、新しいインデックスを割り当てるときに、削除された要素をスキップします。
収集メソッドEXTENDを初期化されていないネストされたテーブルまたはVARRAYに適用するとどうなりますか?
PL / SQLコレクション・メソッドEXTENDが初期化されていないコレクションに適用されると、 COLLECTION_IS_NULLが表示されます。 例外。
定義された制限を超えてVARRAYを拡張しようとするとどうなりますか?
収集メソッドEXTENDをVARRAYとともに使用して、定義された制限を超えて拡張する場合は、SUBSCRIPT_BEYOND_LIMITという別の例外に直面する必要があります。
ねえ、マニッシュ!この収集方法EXTENDの例を見ることはありますか?
はい、上記の各PL/SQLコレクションプロシージャEXTEND呼び出しのデモンストレーションを確実に実行します。 VARRAYを使用したプロシージャコールの延長に加えて。
1。引数なしのPL/SQLコレクションプロシージャEXTEND。
SET SERVEROUTPUT ON; DECLARE TYPE my_nestedTable IS TABLE OF number; nt_obj my_nestedTable := my_nestedTable(); BEGIN nt_obj.EXTEND; nt_obj(1) := 10; DBMS_OUTPUT.PUT_LINE ('Data at index 1 is '||nt_obj(1)); END; /
2。収集手順EXTENDと1つの引数。
SET SERVEROUTPUT ON; DECLARE TYPE my_nestedTable IS TABLE OF number; nt_obj my_nestedTable := my_nestedTable(); BEGIN nt_obj.EXTEND(3); nt_obj(1) := 10; nt_obj(2) := 20; nt_obj(3) := 30; DBMS_OUTPUT.PUT_LINE ('Data at index 1 is '||nt_obj(1)); DBMS_OUTPUT.PUT_LINE ('Data at index 2 is '||nt_obj(2)); DBMS_OUTPUT.PUT_LINE ('Data at index 3 is '||nt_obj(3)); END; /
3。 PL/SQLコレクションプロシージャEXTENDと2つの引数。
SET SERVEROUTPUT ON; DECLARE TYPE my_nestedTable IS TABLE OF number; nt_obj my_nestedTable := my_nestedTable(); BEGIN nt_obj.EXTEND; nt_obj(1) := 28; DBMS_OUTPUT.PUT_LINE ('Data at index 1 is '||nt_obj(1)); nt_obj.EXTEND(5,1); DBMS_OUTPUT.PUT_LINE ('Data at index 4 is '||nt_obj(4)); END; /
4。 VARRAYを使用した収集手順EXTEND(引数なし)
SET SERVEROUTPUT ON; DECLARE TYPE my_Varray IS VARRAY (5) OF NUMBER; vry_obj my_Varray := my_Varray(); BEGIN vry_obj.EXTEND; vry_obj(1) := 10; DBMS_OUTPUT.PUT_LINE('Data at index 1 is '||vry_obj(1)); END; /
上記すべての各LOC(4つを除く)については、YouTubeチャンネルのビデオチュートリアルで詳しく説明されています。
Oracledb認定試験および面接で直面する可能性のあるPL/SQLコレクションメソッドEXTENDに関するすべての可能な質問について説明したことを願っています。また、認定について混乱がある場合は、 『Oracle Database認定試験ガイド』を参照してください。