PostgreSQL: Stored Procedure



The stored procedure is introduced in PostgreSQL 11 that supports the transaction. Postgres user-defined function has a drawback, it can not execute transactions. It means, in the function, we can not open a new transaction, even commit or rollback.

Syntax to create a stored procedure in PostgreSQL



CREATE [OR REPLACE] PROCEDURE procedure_name(parameter_list)
LANGUAGE language_name
AS $$
    stored_procedure_body;
$$;


1- procedure_name is the procedure name.
2- parameter_list is the arguments you want to pass in the procedure.
3- language_name, here you will specify the language such as plpgsql or sql.
4- stored_procedure_body, here you will place the PostgreSQL query/statements.

It is not mandatory a PostgreSQL procedure returns a value like user-defined function. You can use output parameters to return value. If you are familiar with SQL Server the concept of PostgreSQL stored procedure is the same as the SQL Server stored procedure.

Create a stored procedure


For the example let me create a table and insert some records.


CREATE TABLE myaccount (
    acc_id INT GENERATED BY DEFAULT AS IDENTITY,
    acc_name VARCHAR(100) NOT NULL,
    balance DEC(15,2) NOT NULL,
    PRIMARY KEY(acc_id)
);

INSERT INTO myaccount(acc_name,balance)
VALUES('Dilip',10000);

INSERT INTO myaccount(acc_name,balance)
VALUES('Mamta',10000);



SELECT * FROM myaccount;



Result

CREATE OR REPLACE PROCEDURE usp_transfer(INT, INT, DEC)
LANGUAGE plpgsql   
AS $$
BEGIN
    -- subtracting the amount from the Dilip's account
    UPDATE myaccount
    SET balance = balance - $3
    WHERE acc_id = $1;

    -- adding the amount to the Mamta's account
    UPDATE myaccount
    SET balance = balance + $3
    WHERE acc_id = $2;

    COMMIT;
END;
$$;


  

Call the stored procedure in PostgreSQL


Syntax


CALL stored_procedure_name(parameter_list);


stored_procedure_name is the procedure name
parameter_list is the value of the argument whatever defined in the stored procedure.

                                 
select * from myaccount




No comments:

Post a Comment

Please do not enter any spam link in the comment box.

Related Posts

What is the Use of isNaN Function in JavaScript? A Comprehensive Explanation for Effective Input Validation

In the world of JavaScript, input validation is a critical aspect of ensuring that user-provided data is processed correctly. One indispensa...