指定されたリストの要素数を返す汎用 SQL 関数です。
Synopsis
この関数は、データ型 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
以下の 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 を返します。
SET a=$LISTBUILD("Apple","Pear",$LISTBUILD("Walnut","Pecan"))
&sql(SELECT $LISTLENGTH(:a)
INTO :b
FROM Sample.Person)
WRITE !,"The number of elements is ",b