ステートメントまたはコマンドにトークンを含めることができます。それは、REXX 変数に対応できる SQLEXEC、SQLDBS、および SQLDB2 ルーチンに渡されます。この場合、REXX インタープリターは SQLEXEC または SQLDB2 を呼び出す前に、変数の値を置換します。
この状態を避けるには、ステートメントのストリングを、引用符 (' ' または " ") で囲んでください。引用符で囲まない場合、変数名と同じトークンがあると、そのトークンは REXX インタープリターによって解決され、SQLEXEC、SQLDBS、または SQLDB2 ルーチンには渡されません。
REXX/SQL では、複合 SQL はサポートされません。
REXX/SQL ストアード・プロシージャーは、 OS/2 および Windows 32 ビット オペレーティング・システムでサポートされていますが、 AIX ではサポートされていません。
アプリケーションで、DB2 API のいずれかを使用する前、または SQL ステートメントを発行する前に、SQLDBS、SQLDB2、および SQLEXEC ルーチンを登録しなければなりません。この登録は、REXX インタープリターに REXX/SQL の入り口点を知らせます。 OS/2 プラットフォームと AIX プラットフォームでは、登録のための方法が少し異なります。次の例は、それぞれのルーチンの登録について正しい構文を示します。
OS/2 または Windows での登録のサンプル
/* ------------ Register SQLDBS with REXX -------------------------*/ If Rxfuncquery('sQLDBS') <> 0 then rcy = Rxfuncadd('sQLDBS','DB2AR','sQLDBS') If rcy \= 0 then do say 'SQLDBS was not successfully added to the REXX environment' signal rxx_exit end /* ------------ Register SQLDB2 with REXX -------------------------*/ If Rxfuncquery('sQLDB2') <> 0 then rcy = Rxfuncadd('sQLDB2','DB2AR','sQLDB2') If rcy \= 0 then do say 'SQLDB2 was not successfully added to the REXX environment' signal rxx_exit end /* ----------------- Register SQLEXEC with REXX --------------------*/ If Rxfuncquery('sQLEXEC') <> 0 then rcy = Rxfuncadd('sQLEXEC','DB2AR','sQLEXEC') If rcy \= 0 then do say 'SQLEXEC was not successfully added to the REXX environment' signal rxx_exit end
AIX での登録のサンプル
/* ------------ Register SQLDBS, SQLDB2 and SQLEXEC with REXX --------*/ rcy = SysAddFuncPkg("db2rexx") If rcy \= 0 then do say 'db2rexx was not successfully added to the REXX environment' signal rxx_exit end
OS/2 では、RxFuncAdd コマンドはすべてのセッションにつき 1 回だけ実行する必要があります。
AIX では、SysAddFuncPkg をすべての REXX/SQL アプリケーションで実行しなければなりません。
RXfuncadd API および SysAddFuncPkg API の詳細については、それぞれ OS/2 および AIX 版の REXX の資料に記載されています。