PostgreSQL – CREAR PROCEDIMIENTO

PROCEDIMIENTO DE CREACIÓN Hasta ahora, ha aprendido a definir funciones definidas por el usuario utilizando la declaración de función de creación.

Un inconveniente de las funciones definidas por el usuario es que no pueden ejecutar transacciones. En otras palabras, dentro de una función definida por el usuario, no puede iniciar una transacción y confirmarla o revertirla. PostgreSQL 11 introdujo procedimientos almacenados que admiten transacciones. Para definir un nuevo procedimiento almacenado, utilice la declaración de procedimiento de creación.

A continuación se ilustra la sintaxis básica de la declaración de procedimiento de creación:

Syntax:
create [or replace] procedure procedure_name(parameter_list)
language plpgsql
as $$
declare
-- variable declaration
begin
-- stored procedure body
end; $$

Analicemos la sintaxis anterior:

  • crear procedimiento
  • plpgsql

Los parámetros en los procedimientos almacenados pueden tener los modos in y inout . No pueden tener el modo de salida. Un procedimiento almacenado no devuelve un valor. No puede usar la declaración de devolución con un valor dentro de un procedimiento de almacenamiento como este:

return expression;

expresión de retorno

return;

Ejemplo:

cuentas

drop table if exists accounts;

create table accounts (
    id int generated by default as identity,
    name varchar(100) not null,
    balance dec(15, 2) not null,
    primary key(id)
);

insert into accounts(name, balance)
values('Raju', 10000);

insert into accounts(name, balance)
values('Nikhil', 10000);
select * from accounts;

Eso representa el resultado como se muestra a continuación:

transferir

create or replace procedure transfer(
   sender int,
   receiver int, 
   amount dec
)
language plpgsql    
as $$
begin
    -- subtracting the amount from the sender's account 
    update accounts 
    set balance = balance - amount 
    where id = sender;

    -- adding the amount to the receiver's account
    update accounts 
    set balance = balance + amount 
    where id = receiver;

    commit;
end;$$

Llamar a un procedimiento almacenado

LLAMAR

call stored_procedure_name(argument_list);

Ejemplo:

La siguiente transferencia $1, 000

call transfer(1, 2, 1000);

cuentas

SELECT * FROM accounts;

Producción:

Publicación traducida automáticamente

Artículo escrito por RajuKumar19 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *