MySQL から PosgreSql に移行中ですが、バッチ更新で呼び出したい proc/function に若干の問題があります。
値を void と宣言しても常に値を返すように見える Postgresql 関数で更新を実行するにはどうすればよいですか。
これは、問題を説明するための単純な例です。
CREATE OR REPLACE FUNCTION update_function(
IN i_id bigint)
RETURNS void AS $$
DECLARE
d_id bigint;
BEGIN
UPDATE test_table set id = '' where id = i_id;
RETURN;
END;
$$ LANGUAGE plpgsql;
SpringTemplate.update() メソッドを使用してこれを呼び出すと、「org.postgresql.util.PSQLException: 何も期待されていないときに結果が返されました」というエラーが発生します。update を呼び出して値を返すと、エラーがスローされることは理解しています。
私の質問は、postgresql関数が値を返さない方法はありますか、それともバッチ更新を行う別の方法を見つける必要がありますか? 関数を使用して更新を行う理由は、proc/関数で更新されるテーブルが多数あるためです。上記は簡単な説明です。
別の方法として、入力値の配列を解析してそれらをループすることもできます。