PostgreSQLにアクセスする際に「ポータル"C_2"は存在しません 」のようなエラーが発生することがあります。
PostgreSQLにおけるポータル(カーソル)の動作が関係しており、RDBGetコンポーネントを起点としたループ中のRDBPutコンポーネントでコミットした時点でポータルもクローズされるため、次のループのRDBGetコンポーネントでポータルがないというエラーになるというものです。
下記解決方法のうちいずれか適したものを選択してください。
- フローをトランザクション化する
フローをトランザクション化するとRDBPutコンポーネントでコミットは発生せず、トランザクション終了時(通常リクエスト終了時)にコミットされるようになりますので、結果的に回避されます。
※ただしエラー等の発生時などに、ロールバックされ変更内容が反映されなくなりますのでご注意ください。 - RDBGetコンポーネント、RDBPutコンポーネントそれぞれのDBコネクションを分別する
トランザクションはそれぞれ独立したものとなりますので、互いに影響することなく、回避されます。 - RDBGetコンポーネントの「フェッチサイズ」を0にする
この場合、PostgreSQLはポータルを使用しない動作になるようですので、回避されます。