sql >> データベース >  >> RDS >> PostgreSQL

JavaでPostgreSQLプロシージャを呼び出す方法は?

    機能を大幅に簡素化できます。 (質問のために単純化された関数を保持します。)

    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にあります)。



    1. 指定された値の行が存在するかどうかを確認します

    2. Postgres9で現在の日付を更新するためのトリガー

    3. GROUP_CONCAT ORDER BY

    4. mysqlDataSourceを使用したjavax.naming.NoInitialContextException