Postgres 更新可能カーソル(記事修正)
カーソルでフェッチした行を、カーソル名で更新可能な更新可能カーソル*1。
こんな感じですかね。
EXEC SQL DECLARE cur_hoge CURSOR FOR SELECT * FROM hoge FOR UPDATE; EXEC SQL OPEN cur_hoge; EXEC SQL FETCH cur_hoge INTO :hogecol1, :hogecol2; EXEC SQL UPDATE hoge SET hogecol1='val' WHERE CURRENT OF cur_hoge; EXEC SQL CLOSE cur_hoge;
しかし、対象テーブルのOIDを無効にしていると*2
こんなエラーメッセージが表示されてしまいます。
OIDとか関係ありませんでした。
DECLARE CURSORで、 ORDER BYを使用したSELECT文を定義すると
以下のエラーになるようです。
'cursor "cur_hoge" is not a simply updatable scan of table "hoge"'
OracleだとソートかけたSELECT文でも出来たような気がするんですが…
これバグじゃないですかねー?