前のチュートリアルで、7つの収集関数があることを説明しました。これらの7つの収集関数の中で– COUNT()は、このチュートリアルで最初に検討する関数です。この一連のPL/SQLコレクションをフォローしている場合は、このコレクション関数にすでに遭遇している必要があります。しかし、今日の時点で、このトピックに完全なブログを捧げているので、自由を取り、収集方法COUNT()を詳細に検討します。
収集方法COUNT()とは何ですか?
コレクションメソッドCOUNT()は、初期化コレクション内の要素の数を返します。要素のない初期化コレクションとともに使用する場合。ゼロを返します。
混乱しました!収集機能と手順を収集方法と呼ぶのはなぜですか?答えを見つけるために収集方法の紹介を読んでください。
収集メソッドCOUNT()はいつゼロを返しますか?
コレクションメソッドCOUNT()は、適用されるか、要素のない初期化コレクション(つまり、VARRAYとネストされたテーブル)で使用されると、ゼロを返します。また、空の連想配列で使用すると、結果としてゼロが返されます。
収集方法の署名COUNT()?
関数COUNTのシグネチャは–
FUNCTION COUNT RETURN PLS_INTEGER;
推奨読書:PL/SQL関数
収集メソッドCOUNT()はネストされたテーブルでも同じように機能しますか?
いいえ。これは、COUNT()がネストされたテーブル内の空でない要素の数を返すためです。これは、コレクションのネストされたテーブルが空の個々の要素を持つ可能性があるためです。
「Collection_IS_NULL」エラーが発生するのはなぜですか?
初期化されていないコレクションでCOUNT()を使用しているようです。収集関数COUNT()を初期化されていないコレクション(つまり、ネストされたテーブルとVARRAY)に適用すると、Oracleデータベースで事前定義された例外である「Collection_Is_Null」例外が発生します。
連想配列は初期化を必要としないため、この例外は発生しません。連想配列について詳しくは、こちらをご覧ください。
収集方法の例COUNT()
例1:ネストされたテーブルに格納されている要素の総数を計算します。
COUNT()関数を使用して、ネストされたテーブルなどのコレクションに格納されている要素の総数を計算できます。
SET SERVEROUTPUT ON; DECLARE TYPE my_nested_table IS TABLE OF number; var_nt my_nested_table := my_nested_table (9,18,27,36,45,54,63,72,81,90); BEGIN DBMS_OUTPUT.PUT_LINE ('The Size of the Nested Table is ' ||var_nt.count); END; /
どうぞ;上記のコードをコピーしてIDEに貼り付け、結果を確認します。
例2.IF条件を使用したCOUNT()関数
COUNT()関数を使用して、条件を使用してプログラムのフローを制御できます。それでは、IF条件でコレクションメソッドCOUNT()を使用する方法を示す非常に単純なプログラムを作成しましょう。
SET SERVEROUTPUT ON; DECLARE TYPE my_nested_table IS TABLE OF number; var_nt my_nested_table := my_nested_table (9,18,27,36,45,54,63,72,81,90); BEGIN IF var_nt.count >= 10 THEN DBMS_OUTPUT.PUT_LINE (‘you have already inserted 10 elements in your Nested table.'); DBMS_OUTPUT.PUT_LINE ('Are you sure you want to insert more?'); END IF; END; /
同様に、ループで収集メソッドCOUNT()を使用できます。同じトピックに関するPL/SQLチュートリアルを見て、その方法を学ぶことができます。ここでビデオを見つけることができます。
これは非常に簡単なデモンストレーションです。私はあなたがいくつかのクレイジーな例を思い付くことができると確信しています。では、何を待っているのか、先に進んでコードを記述し、このメソッドを使用できる他の可能な方法を確認してください。
コードを確認してほしい場合は、FacebookページまたはTwitterでもコードを共有できます。
このブログはどうですか?改善してほしいことはありますか? FacebookページとTwitterで感じたことを教えてください。
ありがとう、そして素晴らしい一日を!