logo

PostgreSQL 関数

このセクションでは、 PostgreSQL 関数、関数の作成 コマンドのリアルタイムの例を参照してください。 PostgreSQLのCREATE FUNCTIONコマンド PostgreSQL のさまざまなツールを使用する pgadmin4 そして SQL シェル (PSQL)。

を呼び出す例を見てください。 ユーザー定義関数 のような 位置記法、名前付き記法、混合記法。

PostgreSQL関数とは何ですか?

PostgreSQL 関数または ストアドプロシージャ SQL と次のような手続き型コマンドのセットです。 宣言、代入、ループ、制御フロー などはデータベース サーバーに保存されており、 SQLインターフェース 。そしてそれは次のようにも知られています PostgreSQL ストアド プロシージャ

たとえば、サーバー言語で PostgreSQL 関数を作成できます。 SQLPL/pgSQLCパイソン

これにより、通常はデータベース内の関数でさまざまなコマンドとラウンドトリップが必要となる操作を実行できるようになります。

PostgreSQLのCREATE関数コマンドとは何ですか?

PostgreSQL では、新しいユーザー定義関数を指定したい場合は、 関数の作成 指示。

PostgreSQLのCREATE Functionコマンドの構文

の構文 PostgreSQLのCREATE関数コマンド 以下のとおりであります:

 CREATE [OR REPLACE] FUNCTION function_name (arguments) RETURNS return_datatype LANGUAGE plpgsql AS $variable_name$ DECLARE declaration; [...] -- variable declaration BEGIN [...] -- logic RETURN variable_name END; $$ 

上記の構文では、次の表に示すように、次のパラメータを使用しました。

すべて大文字のコマンド Excel
パラメーター 説明
関数名
  • 関数名 パラメータは関数名を定義するために使用されます。
  • 関数名はその後に記述されます。 関数の作成 キーワード。
[または交換]
  • 使用できます または交換してください 現在の関数を変更する場合はキーワードを使用します。
  • そしてそれはオプションのパラメータです。
関数
  • 使用後は、 または交換してください キーワードとして、 関数 パラメータのリストは、その後の括弧内に記載されています。 関数名。
  • また、関数にはゼロまたは複数のパラメーターを含めることができます。
戻る
  • の後にデータ型を定義できます。 戻る 関数から返されるキーワード。
  • これは、ベース、コンポジット、ドメイン タイプ、またはテーブル列のタイプの参照にすることができます。
言語 plpgsql
  • これは、関数が実行される手続き型言語の名前を定義するために使用されます。
  • そしてそれだけではありません plpgsql、 PostgreSQL はさまざまな手続き型言語をサポートしています。
関数本体
  • 関数本体 ロジックの実行可能部分が含まれています。

PostgreSQLの関数作成コマンドの例

の動作を理解するために、別の例を見てみましょう。 PostgreSQLのCREATE関数 指示。

私たちが取っているのは、 からのテーブル ジャワポイント PostgreSQL チュートリアルで作成されたデータベース。

新しい関数の作成

以下のコマンドでは、次の関数をカウントする新しい関数を作成しています。 だれの 車_価格 間に 開始価格と終了価格 パラメーター:

 Create function get_car_Price(Price_from int, Price_to int) returns int language plpgsql as $$ Declare Car_count integer; Begin select count(*) into Car_count from Car where Car_price between Price_from and Price_to; return Car_count; End; $$; 

get_car_Price 関数は 2 つの主要なセクションに分かれています。 ヘッダーと関数本体

で次のパラメータを使用しました。 ヘッダ セクション:

  • まず、関数名を次のように指定します。 get_car_Price()、これは の後に書かれています 関数の作成
  • その後、 get_car_Price() 関数には 2 つのパラメータが含まれています 価格_から そして 価格_to、 整数データ型を持つ。
  • そうして get_car_Price() この関数は、return int 条件で定義された整数を取得します。
  • そして最後に、関数言語を次のように使用しました。 plpgsql

で次のパラメータを使用しました。 関数本体 セクション:

  • 私たちが使用したのは、 ドルで囲まれた文字列 で始まる関数セクションの定数の図 $$ そして次で終わります $$
  • その間 $$ サイン、ブロックを置くことができます。 宣言 そして 関数のロジック
  • 宣言ブロックで、という変数を宣言しました。 車の数、 から選択された車を保管します。
  • ブロックセクションの本体では、 選択してください 値が以下の範囲にある車の価格を選択するコマンド 開始価格と終了価格 そして出力を 車の数
  • ブロックの最後に、 戻る を取得するコマンド

PostgreSQL での関数の作成

PostgreSQL では、次の 2 つの方法で関数を作成できます。

    pgAdmin を使用した PostgreSQL 関数の作成 SQL シェルを使用した PostgreSQL 関数の作成

pgAdmin を使用した PostgreSQL 関数の作成

以下のプロセスに従って関数を作成します。 pgAdmin:

ステップ1

まず、最新バージョンを開きます pgAdmin ローカル システムで、オブジェクト ツリーに移動して、 ジャワポイント 関数を作成するサンプル データベース。

ステップ2

その後、をクリックしてクエリツールを開きます。 クエリツールの後にツールセクションがあり、 以下のスクリーンショットでわかるように、

PoatgreSQL 関数 2

ステップ3

を作成するには、 get_car_Price1() 関数では、上記のコードを使用します。 クエリツール そして、 実行する ボタン。

上記のコマンドを実装すると、次のメッセージ ウィンドウが表示され、関数が get_car_Price1() されています 作成した 同様のデータベースに正常に格納されました。

文字列形式のJava
PoatgreSQL関数

そして、関数を特定することができます get_car_Price() の中に 機能 次のスクリーンショットにあるように、リストが表示されます。

PoatgreSQL関数

注: 関数名を特定できない場合は、[関数] ノードを右クリックし、[更新...] メニュー項目を選択して関数リストを復活させます。

PoatgreSQL関数

SQLシェル(psql)を使用した関数の作成

以下のプロセスに従ってテーブルを作成します。 psql :

ステップ1

  • まず、 psql ローカル システムで、関数を作成するデータベースに接続します。
  • にテーブルを作成します。 ジャバトポイント データベース。PostgreSQL チュートリアルの前半で作成したものです。

ステップ2

  • データベースに接続するには、次のコマンドを入力します。
 c javatpoint 

出力

上記のコマンドを実行すると、次の出力が得られます。

PoatgreSQL関数

注: psql で上記と同様のコマンドを入力して関数を作成すると、次のエラーが発行されます。関数 get_car_price は同じ引数の型ですでに存在します。

PoatgreSQL関数

したがって、このエラーを解決するには、次のような新しい関数を作成します。 get_car_Price1 () 次のステップで。

ステップ3

並べ替えられた配列リスト

以下のコマンドを入力して関数を作成します として get_car_Price1 () の中に ジャバトポイント データベース。

 javatpoint=# Create function get_car_Price1(Price_from int, Price_to int) javatpoint-# returns int javatpoint-# language plpgsql javatpoint-# as javatpoint-# $$ javatpoint$# Declare javatpoint$# Car_count integer; javatpoint$# Begin javatpoint$# select count(*) javatpoint$# into Car_count javatpoint$# from Car javatpoint$# where car_price between Price_from and Price_to; javatpoint$# return Price_count; javatpoint$# End; javatpoint$# $$; 

出力

上記のコマンドを実装すると、次の出力が得られます。 get_car_Price_count1() 関数が正常に作成されました。

PoatgreSQL関数

ステップ4

以下のコマンドを使用すると、既存のデータベース内のすべてのユーザー定義関数を一覧表示できます。

 javatpoint=# df 

出力

上記のコマンドを実行すると、以下の出力が得られます。

PoatgreSQL関数

ユーザー定義関数を呼び出す方法

PostgreSQL では、次の 3 つの方法でユーザー定義関数を呼び出すことができます。

    位置表記 名前付き表記法 混合表記

位置表記を使用した関数の呼び出し

パラメータと同様の順序で引数を記述したい場合は、次のコマンドを使用して関数を呼び出すことができます。 位置表記の ヘルプ。

JavaMVC

を理解するためにサンプル例を見てみましょう。 位置表記 特定の関数を呼び出す作業を行っています。

以下の例では、 get_car_price() 引数は 26000 そして 70000 と同等です。 価格_から そして 価格_to パラメーター。

 Select get_car_Price(26000,70000); 

出力

上記のコマンドを実装すると、次の出力が得られます。これにより、次の 4 つの行が取得されます。 車の価格 は間に 26000から70000。

PoatgreSQL関数

関数にパラメータがほとんどない場合、次の助けを借りて関数を呼び出すことができます。 位置表記

関数に複数のパラメーターが含まれている場合は、 名前付き表記法 を使用しているため、特定の関数を呼び出すには 名前付き表記法 関数呼び出しがよりわかりやすくなります。

名前付き記法を使用した関数の呼び出し

以下の例では、 get_car_Price() 名前付き表記を使用した関数:

 select get_car_Price( Price_from => 26000, Price_to => 70000 ); 

出力

上記のコマンドを実行すると、次の出力が得られます。これは、上記の範囲に基づいて 4 行を表示します。 車の価格

PoatgreSQL関数

前述の表記法では、 => 議論を区別するために 名前と値

PostgreSQL では古い構文を作成できます に:= のために 下位互換性 、次のコマンドでわかるように:

 select get_car_Price( Price_from := 26000, Price_to := 70000 ); 

出力

上記のコマンドを実行すると、「」を使用した上記のコマンドの結果と比較して、同様の出力が得られます。 =>' の代わりに ':='

PoatgreSQL関数

混合記法を使用した関数の呼び出し

のグループ分けです 位置と名前 表記。

の動作を理解するためにサンプル例を見てみましょう。 混合表記を使用した関数の呼び出し。

の中に 混合記法 は使用できません。 名前付きパラメータ 前に 位置パラメータ

例えば:

以下のコマンドでは、 名前付き概念 のために 価格_から パラメータとして 価格から=>26000、 一方、 価格_to パラメータでは、 位置概念 として 70000 以下のコマンドでわかるように、

不変リスト
 select get_car_Price(Price_from=>26000,70000); 

出力

上記のコマンドを実行すると、PostgreSQL は次のようなエラーを発生させます。 位置引数を名前付き引数の後に置くことはできません

PoatgreSQL関数

上記のエラーを解決するには、 位置表記と名前付き表記 のために get_car_price() 関数 26000 を表すために使用されます 位置表記。 一方で、 価格_to=>70000 を表すために使用されます 名前付き表記法 :

 select get_car_Price(26000,Price_to=>70000); 

出力

上記のコマンドを実行すると、以下の出力が得られます。これは、次のような車を返します。 車の価格 26000から70000の間です。

PoatgreSQL関数

概要

の中に PostgreSQL関数 セクションでは、次のトピックを学習しました。

  • 私たちが使用したのは、 CREATE関数 コマンドを使用して、特定のテーブルのユーザー定義関数を作成します。
  • 私たちはそのプロセスを理解しました ユーザー定義関数の呼び出し などのさまざまな表記法の助けを借りて、 位置、名前、混合。