埋め込み SQL で使用される変数です。
Synopsis
%MSG
%OK
%ROWCOUNT
%ROWID
SQLCODE
概要
以下の変数には、埋め込み SQL で特殊な使用方法があります。
%MSG
ユーザ定義のメッセージ文字列を受理する変数。これは、一般的には、SQL エラーまたはトリガ・コードにより %OK=0 が設定されたときに特定のメッセージを発行して、トリガを中止するために使用されます。
%OK
トリガ・コードで使用する変数。%OK が 0 (ゼロ) に設定されると、トリガ・コードを中止し、ロールバックされます。トリガ・コードで明示的に %OK を 0 に設定することも、Caché で暗黙的に行うこともできます。トリガ実行時に SQLCODE が発行されると、%OK は 0 に設定されます。
%ROWCOUNT
それぞれの FETCH を正常に実行した後、Caché SQL で設定された行カウンタの変数。CLOSE 時、または FETCH が SQLCODE 100 (データがない、またはこれ以上データがない) を返すと、%ROWCOUNT は検出された行数の合計に設定されます。また、INSERT コマンド、UPDATE コマンド、および DELETE コマンドも、%ROWCOUNT を、影響を受けた行数に設定します (0 または 1)。%ROWCOUNT は、メソッドまたはプロシージャの開始時に、自動的に NEW で処理されます。
   SET name="LastName,FirstName",state="##"
   &sql(DECLARE EmpCursor CURSOR FOR SELECT Name, Home_State
       INTO :name,:state FROM Sample.Person)
   WRITE !,"BEFORE: Name=",name," State=",state
   &sql(OPEN EmpCursor)
   FOR { &sql(FETCH EmpCursor)
        QUIT:SQLCODE  
        WRITE !,"Row fetched: ",%ROWCOUNT
        WRITE " Name=",name," State=",state
 }
   &sql(CLOSE EmpCursor)
   WRITE !,"AFTER: Name=",name," State=",state
   WRITE !,"Total rows fetched: ",%ROWCOUNT
%ROWID
直前の INSERTUPDATE、または DELETE 処理で変更された行の行 ID。%ROWID は、メソッドまたはプロシージャの開始時に、自動的に NEW で処理されます。
SQLCODE
SQLCODE 変数は、埋め込み SQL から返されると Caché SQL エラー・コード値を返します。詳細は、このドキュメントの "SQL エラー・コード" を参照してください。SQLCODE は、メソッドまたはプロシージャの開始時に、自動的に NEW で処理されます。トリガ・コードで、SQLCODEを 0 以外の値に設定すると、自動的に %OK が 0 に設定されます。
$USERNAME
SQL ユーザ名は、Caché ユーザ名と同じで、Caché ObjectScript の $USERNAME 特殊変数に格納されています。
既定の SQL スキーマが _CURRENT_USER となるようにプロセスが構成されている場合、既定のスキーマの名前は $USERNAME 特殊変数の最初の部分になります。$USERNAME には完全に修飾されたスキーマ名が含まれます (例 : Deborah@Jupiter.com)。SQL は、既定のスキーマとして、ユーザ名の部分 (Deborah) を使用します。同じユーザ名の部分を持つ 2 つの異なる $USERNAME 変数は、同じ既定のスキーマ名を持ちます。