このセクションでは、我々はPostgreSQL関数の動作を理解しようとしている、関数コマンドを作成し、pgadmin4とSQLシェル(PSQL)などのPostgreSQLの異なるツールを使用してPostgreSQL CREATE FUNCTIONコマンドの実時間例を見てください。
そして、位置指定記法、混合記法などのユーザー定義関数の呼び出しの例をご覧ください。
- PostgreSQL関数とは
- PostgreSQL CREATE Functionコマンドとは何ですか
- PostgreSQL CREATE Functionコマンドの構文
- Example of PostgreSQL Create Function Command
- Creating a new function
- Creating function in PostgreSQL
- pgAdminを使ったPostgreSQLの関数作成
- Note: もし関数名を識別できない場合は、 Functionsノードを右クリックして Refresh… menu item to revive the function list:
- Creating a function using SQL Shell(psql)
- Note: If we enter a similar command as above to create a function, in psql, it will issue the below error that is: the function get_car_price already exists with the same argument types.
- How to Call a user-defined function
- 位置記法による関数の呼び出し
- 混合表記による関数の呼び出し
- 概要
PostgreSQL関数とは
PostgreSQL関数またはストアドプロシージャは、データベースサーバーに格納されている宣言、代入、ループ、フローオブコントロールなどのSQLおよび手続きコマンドの集合で、SQLインターフェースを使用して関わることが可能です。
PostgreSQLの関数は、SQL、PL/pgSQL、C、Pythonなどの言語で作成することができます。
これにより、一般的にデータベース内の関数で様々なコマンドやラウンドトリップを要する操作を行うことができます。
PostgreSQL CREATE Functionコマンドとは何ですか
PostgreSQLで新しいユーザ定義関数を指定するには、CREATE FUNCTIONコマンドを使用することができます。
PostgreSQL CREATE Functionコマンドの構文
PostgreSQL CREATE Functionコマンドの構文は次のとおりです。
パラメータ | 説明 |
---|---|
function_name |
|
|
|
Function |
|
RETURN |
|
Language plpgsql |
|
Function_body |
|
Example of PostgreSQL Create Function Command
Let us see a different example to understand the working of the PostgreSQL CREATE Function command.
We are taking the Car table from the Javatpoint database, created in the PostgreSQL Tutorial.
Creating a new function
In the below command, we are creating a new function, which counts the Cars whose Car_Price between the Price_from and Price_to parameters:
The get_car_Price function is divided into two main sections, which are Header and Function Body.
ヘッダー セクションでは、次のパラメーターを使用します:
- まず、関数名を get_car_Price() と指定します。これは create 関数の後に書かれています
- その後、get_car_Price() 関数に整数データ型の Price_from と Price_to というパラメーターがあります。
- そして、get_car_Price()関数はreturn int条件で定義された整数を取得します。
- そして最後に、関数言語をplpgsqlとして使用しました。
関数本体セクションで以下のパラメータを使用しました。
- 関数セクションでドル引用符付きの文字列constantの図を使用しました。
- 宣言ブロックでは、Car_countという変数を宣言し、Car
- ブロックセクションの本文で、Carから選択した車を保存しています。 SELECT INTOコマンドを使用して、Price_fromとPrice_toの間にある車のPriceを選択し、Car_countに出力を与えています
- ブロックの最後に、RETURNコマンドを使用して
Creating function in PostgreSQL
PostgreSQLにおいて、2通りの方法で関数を作成できます。
- pgAdminを使ったPostgreSQLの関数作成
- SQL Shellを使ったPostgreSQLの関数作成
pgAdminを使ったPostgreSQLの関数作成
gAdminで関数を作るには以下のプロセスを踏襲します。
ステップ1
まず、ローカルシステムで最新版のpgAdminを開き、オブジェクトツリーに移動して、関数を作成するJavatpointサンプルデータベースに接続します。
ステップ2
その後、以下のスクリーンショットにあるように、ツールセクションに続いてクエリーツールをクリックすることによってクエリーツールを開きます。
上記のコマンドを実装すると、以下のメッセージ ウィンドウが表示され、関数 get_car_Price1() が同様のデータベースに正常に作成されたことがわかります。
そして、次のスクリーンショットに見られるように、Functions リストで関数 get_car_Price() を識別することができます:
Creating a function using SQL Shell(psql)
We are going to follow the below process to create a table in psql:
Step1
- Firstly, we will open the psqlin our local system, and we will connect to the database where we want to create a function.
- We will create a table in the javatpointdatabase, which we created earlier in the PostgreSQL tutorial.
Step2
- For connecting a database, we will enter the below command:
Output
After executing the above command, we will get the following output:
Note: If we enter a similar command as above to create a function, in psql, it will issue the below error that is: the function get_car_price already exists with the same argument types.
Therefore, to resolve this error, we create a new function as get_car_Price1() in the next step.
Step3
We will enter the below command to create a function as get_car_Price1() in the javatpoint database.
Output
We will get the following output on implementing the above command, which displays that the get_car_Price_count1() function has been created successfully.
Step4
We can use the below command to list all user-defined functions in the existing database.
Output
After executing the above command, we will get the below output:
How to Call a user-defined function
In PostgreSQL, we can call the user-defined function in three ways, which are as follows:
- 位置記法
- 名前記法
- 混合記法
位置記法による関数の呼び出し
引数をパラメータと同様の順序で記述したい場合、位置記法の助けにより関数を呼び出すことができます。
特定の関数を呼び出すために働く位置記法を理解するために、サンプル例を見てみましょう。
以下の例では、get_car_price() の引数は 26000 と 70000 で、これは Price_from と Price_to パラメータと等価です。
出力
上記のコマンドを実行すると、以下の出力が得られます。car_priceが26000から70000の間の4行を取得します。
関数にパラメータがない場合、位置記法を用いて、関数を呼び出すことが可能です。
関数にいくつかのパラメータがある場合、特定の関数を呼び出すために名前付き記法を使用することができます。
名前付き表記法による関数の呼び出し
以下の例では、名前付き表記法を使用して get_car_Price() 関数を呼び出したときの動作を示しています。
出力
上記のコマンドを実行すると、以下の出力が得られ、上記の範囲の car_price に基づいて 4 行が表示されます。
前述の記法では、引数の名前と値を区別するために => を使用しました。
PostgreSQLでは、後方互換性のために:=で作成された古い構文が使用できます。
出力
上記のコマンドを実行した後、:=の代わりに ‘=>’ を使用した上記のコマンドの結果と比較して同様の出力を得ることができます。
混合表記による関数の呼び出し
位置指定と名前指定の表記をグループ化したものです。
混合表記による関数の呼び出しの動作を理解するために、サンプルを見てみましょう。
混合表記では、位置パラメーターの前に名前付きパラメーターを使用することはできません。
たとえば、以下のコマンドでは、Price_from パラメータに Price_from=>26000 という名前の記法を使用し、一方 Price_to パラメータには、以下のコマンドでわかるように、70000 という位置の記法を使用しています。
出力
上記のコマンドを実行すると、PostgreSQLは「位置引数が名前付き引数に続かない」というエラーを発生させます。
上記のエラーを解決するために、get_car_price() 関数に位置と名前の表記法を使用しています。
出力
上記のコマンドを実行すると、car_price が 26000 から 70000 までの車を返す、以下のような出力が得られます。
概要
PostgreSQL関数セクションでは、以下のトピックを学びました。
- CREATE Functionコマンドを使用して、特定のテーブルに対してユーザー定義関数を作成しました。
r