機能を大幅に簡素化できます。 (質問のために単純化された関数を保持します。)
CREATE OR REPLACE FUNCTION get_geom_difference()
RETURNS integer AS
$BODY$
SELECT num
FROM filedata
WHERE num = 1
LIMIT 1; -- needed if there can be more than one rows with num = 1
$BODY$ LANGUAGE SQL;
ただし、技術的には、データ型が一致していれば、質問にあるものも機能します。しますか?列はfiledata.num
です タイプinteger
?それが私が例から集めたものです。 その他の質問
について numeric
を想定していました 情報不足のため。それらの少なくとも1つは失敗します。
関数の戻り型が戻り値と一致しない場合、PostgreSQL関数からエラーが発生します。この場合、適切に構成されていると、PostgreSQLログに詳細なエラーメッセージが表示されます。
上記の関数をPostgreSQLで作成してから呼び出すと、何が表示されますか:
SELECT get_geom_difference(1);
psql から 。 (データベース、ポート、サーバー、またはユーザーの混同を排除するために、同じセッションで行うことが望ましいです。)
1つのパラメーターを取り、1つのスカラー値を返す単純な関数を呼び出すことは、非常に簡単に思えます。 PostgreSQLJDBCマニュアルの第6.1章 質問の内容と完全に一致するように見える完全な例があります(ただし、私の専門知識はJDBCではなくPostgresにあります)。