prepare

EGL prepare ステートメントは SQL PREPARE ステートメントを 指定します。オプションで、実行時にのみ既知になる詳細が含まれます。 EGL execute ステートメントを実行するか、または、SQL ステートメントが結果セットを 戻す場合に、EGL open または get ステートメントを実行することで、 準備済み SQL ステートメントが実行されます。


prepare 文の構文図
preparedStatementID
prepare 文を executeopen、 または get 文に 関連付ける ID。
stringExpression
有効な SQL ステートメントを含むストリング式
SQL record name
SQL レコードの名前。 この名前の指定には、次の 2 つの利点があります。
  • EGL エディターには、ユーザーの指定を基に SQL ステートメントを引き出す ダイアログがある
  • prepare 文の実行後、次の例のように、 レコード名で入出力エラー値を照らし合わせ、その文が成功したかどうかを 判別できる
        try
        prepare prep01 from  
         "insert into " + aTableName + 
         "(empnum, empname) " +
         "value ?, ?"
        for empRecord;
    
      onException
        if empRecord is unique
          myErrorHandler(8);
        else
          myErrorHandler(12);
        end
      end
以下に別の例を示します。
  myString = 
    "insert into myTable " +  "(empnum, empname) " +
    "value ?, ?";

  try
    prepare myStatement 
      from myString;
  onException
    myErrorHandler(12);   // プログラムを終了
  end

  try
    execute myStatement 
    using :myRecord.empnum,
          :myRecord.empname;
  onException
    myErrorHandler(15);
  end

上記の例で示されるように、開発者は ホスト変数を指定する部分に疑問符 (?) を使用できます。 その後、実行時に使用されるホスト変数の名前が、準備済み文を 実行する executeopen、 または get 文を使用している文節に配置されます。

結果セットの行で実行する prepare 文には、 resultSetIdentifier の現行値 形式の句を含めることができます。 この手法は、次の状況でのみ有効です。
以下に例を示します。
	 prepare prep02 from
    "update myTable " +
    "set empname = ?,  empphone = ?  where current of x1" ;
 
  execute prep02 using empname, empphone ;  freeSQL prep02;

括弧がプラス (+) 記号の使用に与える影響の例については、『』を参照してください。

関連する概念
パーツの参照
レコード・タイプとプロパティー
SQL サポート

関連する参照項目
add
close
delete
例外処理
execute

freeSQL
get
get next
get previous
入出力エラー値
EGL 文
open
replace
SQL 項目のプロパティー
テキスト式
構文図

ご利用条件 | フィードバック
(C) Copyright IBM Corporation 2000, 2005. All Rights Reserved.(C) Copyright IBM Japan 2005.