独自のパラメータを定義することもできます。独自のパラメータは、ユーザ定義の変数を使用できない RDBMS に特に便利です。
ユーザ定義のパラメータは、最初に参照されるときに定義され、NULL に設定されます。パラメータには、ui とピリオド (ui.) のプレフィクスを付ける必要があります。ユーザ定義のパラメータは 1 つの同期が終わるまで値が維持され、別の同期が開始されるときに NULL に設定されます。ユーザ定義のパラメータは in/out です。
ユーザ定義のパラメータは通常、テーブルに格納しないでステータス情報にアクセスするために使用します。テーブルに格納するには、複雑なジョインが必要です。
たとえば、var1 という変数を custom_value に設定する MyCustomProc というストアド・プロシージャを作成するとします。
CREATE PROCEDURE MyCustomProc( IN username VARCHAR (128), INOUT var1 VARCHAR (128) ) begin SET var1 = 'custom_value'; end |
次の begin_connection スクリプトでは、ユーザ定義のパラメータ var1 を定義し、値を custom_value に設定しています。
CALL ml_add_connection_script ( 'version1', 'begin_synchronization', '{call MyCustomProc( {ml s.username}, {ml ui.var1} )}' ); |
次の begin_upload スクリプトでは、値が custom_value の var1 を参照しています。
CALL ml_add_connection_script ( 'version1', 'begin_upload', 'update SomeTable set some_column = 123 where some_other_column = {ml ui.var1}' ); |
最初のパラメータを in/out に定義する MyPFDProc という別のストアド・プロシージャがあるとします。次の prepare_for_download スクリプトでは、var1 の値を pfd_value に変更しています。
CALL ml_add_connection_script ( 'version1', 'prepare_for_download', '{call MyPFDProc( {ml ui.var1} )}' ); |
次の begin_download スクリプトでは、値が pfd_value の var1 を参照しています。
CALL ml_add_connection_script ( 'version1', 'begin_download', 'insert into SomeTable values( {ml s.username}, {ml ui.var1} )' ); |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |