夏休みは19日までもらえることになりました。まあその代わり夏休みに入る前にやることはきっちりとやっていけよといわれてるのでまあそれなりに忙しくなりそうだけど。まあ忙しいといってもたかが知れてるんだけども。
仕事の話。VBで画面作ったりしてるんだけども、SQLをあれこれ考えながら進めていくのは楽しい。SQLクックブックを一通り読んだおかげでぐぐるためのきっかけみたいなのがたくさんあるのでやりやすい。やっぱ基本的には本読まないと駄目だよなあ。画面上の入力から2行分のデータを作るってのにいちいちレコードの有無を調べるのも面倒なのでmerge文とか使って科学の勝利だとか思ってたら、実行したときの戻り値が-1で困る。sqlplusとかで実行するとちゃんと通るし、rollbackをcommitに書き換えたらちゃんと更新されたので、SQLの実行まではちゃんとしてるようだ。が、まあ更新失敗と区別つかんしなあというわけで結局ifでSQLの生成自体を分岐。ちぇー。
あともうひとつ。ある属性の値でソートしたときに、基準値の次のレコードとか前のレコードってどうやったら取得できるのかなーと思ってぐぐったらわりと簡単な答えがそこにあった。where条件に、「(属性) > (基準値) and rownum = 1」として適切にソートすればOK。確か前同じ話の解放を読んだ気がするんだけど、これより難しい書き方だった気がする。他にもインラインビュー同士の自己結合とか(←なんか言ってることがおかしい)工夫を凝らしたSQLとか書いてるものの、まあ規約にはパフォーマンスを考慮すること程度のことしか書いてないし良いよね。