リテラル値に対する文字列置換を使用したビュー基準式への1回のみ使用
newView()
をコールした後にビュー・オブジェクトを1回のみ使用する場合は、次のようにGroovyの組込み文字列置換機能を使用して、変数または式の値をビュー基準式テキストに直接置き換えます:
def vo = newView('StaffMember')
def loSal = 13500
def anon = 'Anonymous'
vo.appendViewCriteria("(Salary between ${loSal} and ${loSal + 1}) and LastName != '${anon}'")
vo.executeQuery()
リテラル文字列値を一重引用符で囲む必要があります。 文字列の置換は、文字列がappendViewCriteria()
関数に渡された時点で行われるため、loSal
またはanon
変数の値が変更された場合、新しい値は置換文字列のフィルタ基準式に遡及的に反映されません。 次の例では、GroovyはappendViewCriteria()
関数に渡す前に、loSal
およびanon
の値をビュー基準式文字列に置換します。 それらの値がスクリプトの後半で変更されても、vo.executeQuery()
が2回実行されると、ビュー・オブジェクトは、変更した変数値の影響を受けず、以前と同じフィルタ式を使用して再実行されます。
def vo = newView('StaffMember')
def loSal = 13500
def anon = 'Anonymous'
vo.appendViewCriteria("(Salary between ${loSal} and ${loSal + 1}) and LastName != '${anon}'")
vo.executeQuery()
// ... etc ...
loSal = 24000
anon = 'Julian'
// The changed values of 'loSal' and 'anon' are not used by the
// view criteria expression because the one-time string substitutions
// were done as part of the call to appendViewCriteria() above.
vo.executeQuery()
同じスクリプト内でビュー基準フィルタ式が追加されたビュー・オブジェクトを複数回使用する必要がある場合は、文字列置換ではなく、次の項で説明する名前付きバインド変数を使用します。 名前付きバインド変数を使用すると、変数の更新された値は、再実行される問合せによって自動的に使用されます。