概要
$LISTGET は、指定したリスト内の要求した要素を標準文字の文字列として返します。position 引数値が存在しないメンバを参照している場合、または未定義値を持つ要素を指している場合は、指定された既定値を返します。
$LISTGET 関数は、$LIST 関数の引数が 1 つおよび 2 つの形式とまったく同じですが、$LIST が NULL 文字列を返す条件下では、$LISTGET は既定値を返します。
この関数は、データ型 VARCHAR を返します。
$LISTGET を使用すると、シリアル・コンテナ・フィールドからフィールド値を取得できます。以下の例では、Home がシリアル・コンテナ・フィールドであり、その 3 つ目の要素が Home_State です。
SELECT Name,$LISTGET(Home,3) AS HomeState
FROM Sample.Person
例
以下の埋め込み SQL の例の $LISTGET 関数は、どちらもリストの先頭要素である Red を返します。
SET a=$LISTBUILD("Red","Blue","Green")
&sql(SELECT $LISTGET(:a),$LISTGET(:a,1)
INTO :b,:c)
IF SQLCODE'=0 {
WRITE !,"Error code ",SQLCODE }
ELSE {
WRITE !,"The one-arg element returned is ",b
WRITE !,"The two-arg element returned is ",c }
以下の埋め込み SQL の例の $LISTGET 関数は、どちらも、リストの最終要素である 3 つ目の要素 Green を返します。
SET a=$LISTBUILD("Red","Blue","Green")
&sql(SELECT $LISTGET(:a,3),$LISTGET(:a,-1)
INTO :b,:c)
IF SQLCODE'=0 {
WRITE !,"Error code ",SQLCODE }
ELSE {
WRITE !,"The third element is ",b
WRITE !,"The last element is ",c }
以下の埋め込み SQL の例の $LISTGET 関数は、どちらも、リストの未定義の 2 つ目の要素が見つかった場合に値を返します。最初の例は、ユーザが既定値として定義した疑問符 (?) を返します。2 つ目の例は、既定値が指定されていないため NULL 文字列を返します。
SET a=$LISTBUILD("Red",,"Green")
&sql(SELECT $LISTGET(:a,2,'?'),$LISTGET(:a,2)
INTO :b,:c)
IF SQLCODE'=0 {
WRITE !,"Error code ",SQLCODE }
ELSE {
WRITE !,"The default value is ",b
WRITE !,"The no-default value is ",c }
以下の埋め込み SQL の例の $LISTGET 関数は、どちらも 3 つの要素リストの最終要素よりも大きい位置を指定します。最初の例は、既定値が指定されていないため NULL 文字列を返します。2 つ目の例は、ユーザ指定の既定値 “ERR” を返します。
SET a=$LISTBUILD("Red","Blue","Green")
&sql(SELECT $LISTGET(:a,4),$LISTGET(:a,4,'ERR')
INTO :b,:c)
IF SQLCODE'=0 {
WRITE !,"Error code ",SQLCODE }
ELSE {
WRITE !,"The no-default 4th element is ",b
WRITE !,"The default for 4th element is ",c }
以下の埋め込み SQL の例の $LISTGET 関数は、どちらも NULL 文字列を返します。
SET a=$LISTBUILD("Red","Blue","Green")
&sql(SELECT $LISTGET(:a,0),$LISTGET(NULL)
INTO :b,:c)
IF SQLCODE'=0 {
WRITE !,"Error code ",SQLCODE }
ELSE {
WRITE !,"The zero element is ",b
WRITE !,"The NULL element is ",c }