logo

Funcions PostgreSQL

En aquesta secció, entendrem el funcionament del Funcions PostgreSQL, funció de creació comanda i vegeu l'exemple en temps real de Ordre PostgreSQL CREATE FUNCTION utilitzant les diferents eines de PostgreSQL com ara pgadmin4 i shell SQL (PSQL).

I mireu l'exemple de cridar a funció definida per l'usuari tal com notació posicional anomenada notació, la notació mixta.

Què és la funció PostgreSQL?

Una funció PostgreSQL o a procediment emmagatzemat és un conjunt d'ordres SQL i procedimentals com ara declaracions, assignacions, bucles, flux de control etc. s'emmagatzemen al servidor de bases de dades i es poden implicar mitjançant l' Interfície SQL . I també es coneix com Procediments emmagatzemats PostgreSQL .

Podem crear funcions PostgreSQL en llenguatges serval, per exemple, SQL , PL/pgSQL , C , Python etc.

Ens permet realitzar operacions, que generalment prendrien diverses ordres i viatges d'anada i tornada en una funció dins de la base de dades.

Què és l'ordre PostgreSQL CREATE Function?

A PostgreSQL, si volem especificar una nova funció definida per l'usuari, podem utilitzar el FUNCIÓ DE CREAR comandament.

Sintaxi de l'ordre PostgreSQL CREATE Function

La sintaxi per Ordre de la funció CREATE de PostgreSQL és el següent:

 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; $$ 

A la sintaxi anterior, hem utilitzat els paràmetres següents, tal com es mostra a la taula següent:

substituir un color a gimp
Paràmetres Descripció
nom_funció
  • El nom de la funció El paràmetre s'utilitza per definir el nom de la funció.
  • El nom de la funció s'escriu després de FUNCIÓ DE CREAR paraula clau.
[O SUBSTITUIR]
  • Podem utilitzar el O SUBSTITUIR paraula clau si volem canviar la funció actual.
  • I és un paràmetre opcional.
Funció
  • Després d'utilitzar el O SUBSTITUIR paraula clau, podem definir la funció llista de paràmetres que es cobreixen entre parèntesis després de Nom de la funció.
  • I una funció pot contenir zero o diversos paràmetres.
TORNAR
  • Podem definir el tipus de dades després de TORNAR paraula clau, que tornarem de la funció.
  • Pot ser un tipus de base, compost o de domini o referència del tipus d'una columna de taula.
Llenguatge plpgsql
  • S'utilitza per definir el nom del llenguatge procedimental en què s'executa la funció.
  • I no només plpgsql, el PostgreSQL admet diversos llenguatges de procediment.
Cos_funció
  • El cos_funció conté les parts executables de la lògica.

Exemple de l'ordre de creació de funció de PostgreSQL

Vegem un exemple diferent per entendre el funcionament del Funció PostgreSQL CREATE comandament.

Estem prenent el Cotxe taula de la Javatpoint base de dades, creada al Tutorial PostgreSQL.

Creació d'una nova funció

A l'ordre següent, estem creant una funció nova, que compta el Cotxes de qui Preu_cotxe entre Preu_des i Preu_fins paràmetres:

 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; $$; 

El get_car_Price funció es divideix en dues seccions principals, que són Capçalera i cos de la funció .

Hem utilitzat els següents paràmetres a l' Capçalera secció:

  • Principalment, especifiquem el nom de la funció com get_car_Price(), que s'escriu després del crear la funció
  • Després d'això, el get_car_Price() La funció conté dos paràmetres Preu_des de i Preu_a, amb un tipus de dades enter.
  • Aleshores el get_car_Price() La funció recupera un nombre enter definit per la condició de retorn int.
  • I al final, hem utilitzat el llenguatge de funció com plpgsql .

Hem utilitzat els següents paràmetres a l' Cos de funció secció:

  • Hem utilitzat el cadena entre cometes en dòlars il·lustració constant a la secció de funcions, que comença amb $$ i acaba amb $$ .
  • Entremig $$ senyal, podem col·locar un bloc, que cobreix la declaració i lògica de la funció .
  • Al bloc de declaració, vam declarar una variable anomenada Recompte de cotxes, que emmagatzema els cotxes seleccionats del Cotxe
  • Al cos de la secció de blocs, hem utilitzat SELECCIONA A comanda per seleccionar el Preu dels cotxes els valors dels quals es troben entre Preu_des i Preu_fins i donar la sortida al Recompte_cotxes
  • Al final del bloc, hem utilitzat el TORNAR comanda per obtenir el

Creació d'una funció a PostgreSQL

A PostgreSQL, podem crear una funció de dues maneres:

    PostgreSQL Crea la funció utilitzant pgAdmin PostgreSQL Crea una funció mitjançant SQL Shell

PostgreSQL Crea una funció utilitzant pgAdmin

Seguirem el procés següent per crear una funció pgAdmin:

Pas 1

En primer lloc, obrirem la darrera versió pgAdmin al nostre sistema local, i anirem a l'arbre d'objectes i ens connectarem al Javatpoint base de dades de mostra en la qual volem crear una funció.

Pas 2

Després d'això, obrirem l'eina de consulta fent clic a Eina de consulta seguida de la secció Eines, com podem veure a la captura de pantalla següent:

hashtable versus hashmap
Funció PoatgreSQL 2

Pas 3

Per crear el get_car_Price1() funció, utilitzarem el codi anterior al fitxer eina de consulta i feu clic a Executar botó.

Després d'implementar l'ordre anterior, obtindrem la finestra de missatge següent que mostra la funció get_car_Price1() ha sigut creat amb èxit en una base de dades similar.

Funció PoatgreSQL

I, podem identificar la funció get_car_Price() en el Funcions llista com podem veure a la següent captura de pantalla:

Funció PoatgreSQL

Nota: si no podem identificar el nom de la funció, podem fer clic amb el botó dret al node Funcions i seleccionar l'element del menú Actualitzar... per reactivar la llista de funcions:

Funció PoatgreSQL

Creació d'una funció amb SQL Shell (psql)

Seguirem el procés següent per crear una taula psql :

Pas 1

  • En primer lloc, obrirem el psql al nostre sistema local, i ens connectarem a la base de dades on volem crear una funció.
  • Crearem una taula al javatpoint base de dades, que vam crear anteriorment al tutorial de PostgreSQL.

Pas 2

  • Per connectar una base de dades, introduirem l'ordre següent:
 c javatpoint 

Sortida

Després d'executar l'ordre anterior, obtindrem la següent sortida:

Funció PoatgreSQL

Nota: Si introduïm una ordre semblant a l'anterior per crear una funció, en psql, emetrà l'error següent, que és: la funció get_car_price ja existeix amb els mateixos tipus d'argument.

Funció PoatgreSQL

Per tant, per resoldre aquest error, creem una nova funció com get_car_Price1 () al següent pas.

Pas 3

com convertir int en cadena

Introduirem l'ordre següent per crear una funció com get_car_Price1 () a la javatpoint base de dades.

 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$# $$; 

Sortida

Tindrem la següent sortida en implementar l'ordre anterior, que mostra que el get_car_Price_count1() La funció s'ha creat correctament.

Funció PoatgreSQL

Pas 4

Podem utilitzar l'ordre següent per llistar totes les funcions definides per l'usuari a la base de dades existent.

 javatpoint=# df 

Sortida

Després d'executar l'ordre anterior, obtindrem la següent sortida:

Funció PoatgreSQL

Com cridar una funció definida per l'usuari

A PostgreSQL, podem cridar la funció definida per l'usuari de tres maneres, que són les següents:

    Notació posicional Notació anomenada La notació mixta

Crida a una funció mitjançant la notació posicional

Si volem descriure els arguments en un ordre semblant com a paràmetres, podem cridar una funció amb el notació posicional ajuda.

programació en matrius c

Vegem un exemple de mostra per entendre-ho Notació posicional treballant per cridar una funció concreta.

A l'exemple següent, el obtenir_preu_de_cotxe() els arguments són 26000 i 70000 , que és equivalent al Preu_des de i Preu_a paràmetres.

 Select get_car_Price(26000,70000); 

Sortida

Tindrem la següent sortida en implementar l'ordre anterior, que recupera les quatre files de les quals preu_cotxe està entre 26.000 a 70.000.

Funció PoatgreSQL

Quan la funció gairebé no té cap paràmetre, podem cridar una funció amb l'ajuda de la notació posicional .

Si la funció conté diversos paràmetres, podem utilitzar el notació anomenada per cridar la funció en particular perquè s'utilitza el notació anomenada farà que la crida de funció sigui més entenedora.

Crida a una funció utilitzant la notació amb nom

A l'exemple següent, estem mostrant el funcionament de cridar a get_car_Price() funció utilitzant la notació anomenada:

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

Sortida

Tindrem la següent sortida en executar l'ordre anterior, que mostra quatre files en funció de l'interval anterior de preu_cotxe .

Funció PoatgreSQL

En la notació esmentada anteriorment, hem utilitzat el => per distingir l'argument nom i valor .

PostgreSQL permet crear la sintaxi anterior a := per al retrocompatibilitat , com podem veure a la següent comanda:

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

Sortida

Després d'executar l'ordre anterior, obtindrem una sortida similar en comparació amb el resultat de l'ordre anterior on fem servir el ' =>' en lloc de ':=' .

Funció PoatgreSQL

Crida a una funció utilitzant la notació mixta

És l'agrupació de posicional i amb nom notacions.

Vegem un exemple de mostra per entendre el funcionament del Crida a una funció amb notació mixta.

En el notació mixta , no podem utilitzar el anomenada Paràmetres abans Paràmetres posicionals .

Per exemple:

A l'ordre següent, utilitzarem el noció anomenada per Preu_des de paràmetre com Preu_des de => 26000, mentre que per al Preu_a paràmetre, hem utilitzat el noció posicional com 70000 , com podem veure a l'ordre següent:

canviar el nom del directori a linux
 select get_car_Price(Price_from=>26000,70000); 

Sortida

Després d'executar l'ordre anterior, PostgreSQL genera un error, que diu que el L'argument posicional no pot seguir l'argument anomenat .

Funció PoatgreSQL

Per resoldre l'error anterior, estem utilitzant el notació posicional i anomenada per el_preu_de_cotxe() funció on el 26000 s'utilitza per representar el Notació posicional; per altra banda, Preu_fins a =>70000 s'utilitza per representar el notació anomenada :

 select get_car_Price(26000,Price_to=>70000); 

Sortida

Després d'executar l'ordre anterior, obtindrem la sortida següent, que retorna els cotxes dels quals preu_cotxe està entre 26.000 i 70.000.

Funció PoatgreSQL

Visió general

En el Funció PostgreSQL secció, hem après els següents temes:

  • Hem utilitzat el Funció CREATE ordre per crear una funció definida per l'usuari per a la taula concreta.
  • Hem entès el procés de crida a una funció definida per l'usuari amb l'ajuda de diferents anotacions com ara Posicional, nomenat i mixt.