CLPPlus のエスケープ文字
CLPPlus コマンドおよび照会の中で、エスケープ文字を使用できます。
説明
CLPPlus 中では、アンパーサンド (&) 文字を使用して、SQL ステートメントの変数を置換できます。 エスケープ文字を使用して、入力値中のアンパーサンド文字 (例えば、 "AT&M") をエスケープして、置換がなされないようにすることができます。
エスケープ文字を使用して、文字 "$" および "%" をエスケープすることもできます。これらの文字は、CLPPlus 中でシェルおよび環境変数の参照に使用されるものです。
エスケープ文字は、SET コマンドで定義できます。 デフォルトのエスケープ文字は「¥」です。 SET コマンドについて詳しくは、関連する解説書を参照してください。
例
- この例は、デフォルトのエスケープ文字を使用して "&M" が置換変数として扱われないようにする方法を示しています。
SQL> set escape ON SQL> insert into testtab values('AT¥&M'); Db250000I: The command completed successfully. SQL> select * from testtab; TEXT ------------------- AT&M - この例は、ユーザー定義のエスケープ文字を使用して "&G" が置換変数として扱われないようにする方法を示しています。
SQL> set escape ^ SQL> insert into testtab values('L^&G'); Db250000I: The command completed successfully. SQL> select * from testtab; TEXT ------------------- AT&M L&G - この例は、エスケープ文字が使用されていない時の動作を示しています。
"&V" は置換変数として扱われ、ユーザーは "Planet" の入力値を提供する必要があります。
SQL> set escape OFF SQL> insert into testtab values('Smarter &V'); Enter a value for variable V: Planet Original statement: insert into testtab values('Smarter &V') New statement with substitutions: insert into testtab values('Smarter Planet') Db250000I: The command completed successfully. SQL> select * from testtab; TEXT ------------------- AT&M L&G Smarter Planet - この例は、エスケープ文字が使用されていない時の動作を示しています。
"&V" は置換変数として扱われ、ユーザーは "Gene" の入力値を提供する必要があります。
SQL> set escape OFF SQL> insert into testtab values('Blue ¥&V'); Enter a value for variable V: Gene Original statement: insert into testtab values('Blue ¥&V') New statement with substitutions: insert into testtab values('Blue ¥Gene') Db250000I: The command completed successfully. SQL> select * from testtab; TEXT ------------------- AT&M L&G Smarter Planet Blue ¥Gene - この例は、エスケープ文字が使用されている時の動作を示しています。
"$100" は値として扱われ、シェルまたは環境変数としては扱われません。
SQL> set escape ON SQL> insert into testsub values('¥$100'); Db250000I: The command completed successfully. SQL> select * from testsub; TEXT ------------------- $100 - この例は、エスケープ文字が使用されている時の動作を示しています。
"86%" は値として扱われ、シェルまたは環境変数としては扱われません。
SQL> set escape ON SQL> insert into testsub values('86¥%'); Db250000I: The command completed successfully. SQL> select * from testsub; TEXT ------------------- $100 86%