Funcții PostgreSQL

În această secțiune, vom înțelege funcționarea funcțiilor PostgreSQL, comanda de creare a funcțiilor și vom vedea un exemplu în timp real al comenzii PostgreSQL CREATE FUNCTION folosind diferite instrumente PostgreSQL, cum ar fi pgadmin4 și SQL shell (PSQL).

Și vedeți exemplul de apelare a unei funcții definite de utilizator, cum ar fi notația pozițională numită notație, notația mixtă.

Ce este funcția PostgreSQL?

O funcție PostgreSQL sau o procedură stocată este un set de comenzi SQL și procedurale, cum ar fi declarații, atribuiri, bucle, flux de control etc. stocate pe serverul bazei de date și care pot fi implicate folosind interfața SQL. Și este, de asemenea, cunoscută și sub numele de proceduri stocate PostgreSQL.

Pot fi create funcții PostgreSQL în servale limbaje, de exemplu, SQL, PL/pgSQL, C, Python etc.

Ne permite să efectuăm operații care, în general, ar necesita diverse comenzi și călătorii dus-întors într-o funcție din cadrul bazei de date.

Ce este comanda PostgreSQL CREATE Function?

În PostgreSQL, dacă dorim să specificăm o nouă funcție definită de utilizator, putem utiliza comanda CREATE FUNCTION.

Sintaxa comenzii PostgreSQL CREATE Function

Sintaxa pentru comanda PostgreSQL CREATE Function este următoarea:

În sintaxa de mai sus, am folosit următorii parametri, așa cum se arată în tabelul de mai jos:

Parameters Description
function_name
  • Parametrul function name este utilizat pentru a defini numele funcției.
  • The function name is written after the CREATE FUNCTION keyword.
  • We can use the OR REPLACE keyword if we want to change the current function.
  • And it is an optional parameter.
Function
  • After using the OR REPLACE keyword, we can define the function parameter list that are covered in the parentheses after the Function Name.
  • And a function can contain zero or several parameters.
RETURN
  • We can define the data type after the RETURN keyword, which we are going to return from the function.
  • It can be a base, composite, or domain type or reference of the type of a table column.
Language plpgsql
  • It is used to define the name of the Procedural language in which the function is executed.
  • And not just plpgsql, the PostgreSQL supports various procedural languages.
Function_body
  • The function_body contains the executable parts of the logics.

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.

Am utilizat următorii parametri în secțiunea Header:

  • În primul rând, specificăm numele funcției ca get_car_Price(), care este scris după funcția de creare
  • După aceasta, funcția get_car_Price() conține doi parametri Price_from și Price_to, având tipul de date integer.
  • Apoi, funcția get_car_Price() recuperează un număr întreg definit de condiția return int.
  • Și la final, am folosit limbajul funcției ca plpgsql.

Am folosit următorii parametri în secțiunea Corpului funcției:

  • Am folosit ilustrația șirului de caractere în dolariconstant în secțiunea funcției, care începe cu $$ și se termină cu $$.
  • Între semnul $$, putem plasa un bloc, care acoperă declarația și logica funcției.
  • În blocul de declarație, am declarat o variabilă numită Car_count,care stochează mașinile selectate din Car
  • În corpul secțiunii de bloc, am folosit comanda SELECT INTOcomandă pentru a selecta prețul mașinilor ale căror valori sunt cuprinse între Price_from și Price_to și a da ieșirea în Car_count
  • La sfârșitul blocului, am folosit comanda RETURN pentru a obține

Crearea unei funcții în PostgreSQL

În PostgreSQL, putem crea o funcție în două moduri:

  • PostgreSQL Create Function using pgAdmin
  • PostgreSQL Create Function using SQL Shell

PostgreSQL Create Function using pgAdmin

Vom urma procesul de mai jos pentru a crea o funcție în pgAdmin:

Pasul 1

În primul rând, vom deschide cea mai recentă versiune pgAdmin în sistemul nostru local și vom merge în arborele de obiecte și ne vom conecta la baza de date de probă Javatpoint în care dorim să creăm o funcție.

Pasul2

După aceea, vom deschide instrumentul de interogare făcând clic pe instrumentul de interogare urmat de secțiunea Instrumente, așa cum putem vedea în captura de ecran de mai jos:

FuncțiePoatgreSQL2

Pasul3

Pentru a crea funcția get_car_Price1(), vom folosi codul de mai sus în instrumentul de interogare și vom face clic pe butonul Executare.

După implementarea comenzii de mai sus, vom obține fereastra cu mesajul de mai jos care afișează faptul că funcția get_car_Price1() a fost creată cu succes într-o bază de date similară.

PoatgreSQL Function

Și, putem identifica funcția get_car_Price() în lista Functions așa cum putem vedea în următoarea captură de ecran:

PoatgreSQL Function

Nota: Dacă nu putem identifica numele funcției, putem face clic dreapta pe nodul Functions și selecta Refresh… menu item to revive the function list:

PoatgreSQL Function

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:

PoatgreSQL Function

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.

PoatgreSQL Function

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.

PoatgreSQL Function

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:

PoatgreSQL Function

How to Call a user-defined function

In PostgreSQL, we can call the user-defined function in three ways, which are as follows:

  • Notația pozițională
  • Notația cu nume
  • Notația mixtă

Apelarea unei funcții cu ajutorul notației poziționale

Dacă dorim să descriem argumentele într-o ordine similară cu cea a parametrilor, putem apela o funcție cu ajutorul notației poziționale.

Să vedem un exemplu pentru a înțelege cum funcționează notația pozițională pentru a apela o anumită funcție.

În exemplul de mai jos, argumentele get_car_price() sunt 26000 și 70000, ceea ce este echivalent cu parametrii Price_from și Price_to.

Succes

Vom obține următorul rezultat la implementarea comenzii de mai sus, care recuperează acele patru rânduri al căror preț_auto este cuprins între 26000 și 70000.

Funcție POATgreSQL

Când funcția abia are parametri, putem apela o funcție cu ajutorul notației poziționale.

Dacă funcția conține mai mulți parametri, putem utiliza notația nominală pentru a apela funcția respectivă, deoarece utilizarea notației nominale va face ca apelul funcției să fie mai ușor de înțeles.

Apelarea unei funcții cu ajutorul notației numite

În exemplul de mai jos, prezentăm modul de lucru al apelării funcției get_preț_auto() cu ajutorul notației numite:

Succes

La executarea comenzii de mai sus vom obține următorul rezultat, care afișează patru rânduri bazate pe intervalul de mai sus al prețului_auto.

Funcția POATGRESQL

În notația menționată anterior, am folosit => pentru a distinge numele și valoarea argumentului.

PostgreSQL permite sintaxa mai veche creată pe := pentru compatibilitate retroactivă, după cum putem vedea în următoarea comandă:

Succes

După executarea comenzii de mai sus, vom obține o ieșire similară în comparație cu rezultatul comenzii de mai sus în care folosim ‘=>’ în loc de ‘:=’.

Funcție poatgreSQL

Apelarea unei funcții folosind notația mixtă

Este vorba de gruparea notațiilor poziționale și numite.

Vă prezentăm un exemplu pentru a înțelege modul de lucru al apelării unei funcții utilizând notația mixtă.

În notația mixtă, nu putem utiliza parametrii numiți înaintea parametrilor poziționali.

De exemplu:

În comanda de mai jos, vom folosi noțiunea numită pentru parametrul Price_from ca Price_from=>26000, în timp ce pentru parametrul Price_to, am folosit noțiunea pozițională ca 70000, așa cum putem vedea în comanda de mai jos:

Succes

După executarea comenzii de mai sus, PostgreSQL ridică o eroare, care spune că argumentul pozițional nu poate urma argumentul numit.

Funcția PostgreSQL

Pentru a rezolva eroarea de mai sus, folosim notația pozițională și cea numită pentru funcția get_car_price(), unde 26000 este folosit pentru a reprezenta notația pozițională; pe de altă parte, Price_to=>70000 este folosit pentru a reprezenta notația numită:

Succes

În urma executării comenzii de mai sus, vom obține rezultatul de mai jos, care returnează acele mașini al căror preț_mașină este cuprins între 26000 și 70000.

Funcție PostgreSQL

Vizualizare generală

În secțiunea de funcții PostgreSQL, am învățat următoarele subiecte:

  • Am folosit comanda CREATE Functioncomand pentru a crea o funcție definită de utilizator pentru o anumită tabelă.
  • Am înțeles procesul de apelare a unei funcții definite de utilizator cu ajutorul diferitelor notații, cum ar fi Positional, Named și Mixed.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *