楽落人の備忘録

楽して生きていきたい。知識とか覚えておきたくない。

PRO*C書き方

【EXEC SQL WHENNEVER SQLERROR GOTO errorpt;】

WHENEVERはSQLの例外宣言で、

SQLを実行した時に失敗(ユーザの誤りやXDBの異常によって,SQLが正常に実行されなかったとき)errorptへGOTOする処理。

GOTOとか省略可能かも。

またSQLの実行自体がこの例外処理の下に記載されていてもwheneverの条件になるときはそっちの例外処理が適用されているっぽい。

(無限ループの中にそんな感じでbreakするサンプルがあった。革新はない。懸賞の余地ありかな。)

 【EXEC SQL CONNECT :username IDENTIFIELD BY :password;】
DB接続

【EXEC SQL DECLARE CUR1 CURSOR FOR】
カーソルの宣言

→exec sql declare カーソル名 cursor for select 文;

そしてカーソルをオープンする

→exec sql open カーソル名;

で、カーソル内の1行ずつデータを取り出すにはFETCH文を使う。

→exec sql fetch in カーソル名 into ホスト変数リスト ;

FETCHはすべての行を読み終わると、”not found”という例外を発生する仕組みになっているので、前もって例外発生時のアクションを指定する必要がある。

→exec sql whenever not found do break;

 

 

本当にわかりやすい。

http://starscream.hatenablog.com/entry/20130217/1361040309