指定されたリストの要素数を返す汎用 SQL 関数です。
Synopsis
$LISTLENGTH(list)
引数
list リストに評価される任意の式。リストにはエンコードが含まれるので、list は Caché ObjectScript $LISTBUILD 関数を使用して作成されるか、または $LIST を使用して他のリストから抽出されなければなりません。
概要
$LISTLENGTH は、list にある要素の数を返します。
この関数は、データ型 SMALLINT を返します。
以下の例は、リストに 3 つの要素が存在するため、3 を返します。
   SET a=$LISTBUILD("Red","Blue","Green")
   &sql(SELECT $LISTLENGTH(:a)
   INTO :b
   FROM Sample.Person)
   WRITE !,"The number of elements is ",b
メモ
無効なリスト
list が無効なリストの場合は、SQL –400 の致命的なエラーが発生します。
   SET a="fred"
   &sql(SELECT $LISTLENGTH(:a)
   INTO :b
   FROM Sample.Person)
   WRITE !,"SQL error code is ",SQLCODE
   WRITE !,"The number of elements is ",b ; Variable not set
Caché ObjectScript $LISTBUILD 関数を使用して、NULL 文字列のみが含まれるリストを作成した場合、これは 1 つの要素からなる有効な list です。
   SET a=$LISTBUILD("")
   &sql(SELECT $LISTLENGTH(:a)
   INTO :b
   FROM Sample.Person)
   WRITE !,"SQL error code is ",SQLCODE
   WRITE !,"The number of elements is ",b
NULL リスト
以下の 3 つの例は、$LISTLENGTH SQL 関数での NULL リストの処理結果を示します。最初の 2 つの例は、list が NULL 文字列で、NULL 文字列を返します。
   SET a=""
   &sql(SELECT $LISTLENGTH(:a)
   INTO :b
   FROM Sample.Person)
   WRITE !,"SQL error code is ",SQLCODE
   WRITE !,"The number of elements is ",b
   &sql(SELECT $LISTLENGTH(NULL)
   INTO :b
   FROM Sample.Person)
   WRITE !,"SQL error code is ",SQLCODE
   WRITE !,"The number of elements is ",b
3 つ目の例は、list が値 $CHAR(0) で、これは無効なリストのため、SQL –400 の致命的なエラーが発生します。
   &sql(SELECT $LISTLENGTH('')
   INTO :b
   FROM Sample.Person)
   WRITE !,"SQL error code is ",SQLCODE
   WRITE !,"The number of elements is ",b
この結果は、Caché ObjectScript $LISTLENGTH 関数で NULL リストを処理する場合と異なることに注意してください。ゼロ長の文字列は有効なリスト (ゼロ要素) のため、Caché ObjectScript 関数は 0 を返します。
   WRITE $LISTLENGTH("")
$LISTLENGTH と入れ子のリスト
以下の例は、$LISTLENGTH が入れ子になっているリストの個々の要素を認識しないため、3 を返します。
   SET a=$LISTBUILD("Apple","Pear",$LISTBUILD("Walnut","Pecan"))
   &sql(SELECT $LISTLENGTH(:a)
   INTO :b
   FROM Sample.Person)
   WRITE !,"The number of elements is ",b
関連項目