Showing posts with label PL/pgSQL. Show all posts
Showing posts with label PL/pgSQL. Show all posts

Friday, 3 January 2025

How To Return Refcursor From PostgreSQL Procedure || PostgreSQL Refcurso...


Unlock the power of refcursor parameters in PostgreSQL with this comprehensive tutorial! In this video, you'll learn how to create and utilize procedures that return refcursors, enabling dynamic result sets from your database.

Key Highlights:

  • Writing PostgreSQL procedures with multiple parameters.
  • Using the refcursor data type for flexible query results.
  • Step-by-step example demonstrating the refcursor_cursor procedure.
  • Fetching results from a refcursor after execution.

This tutorial explains the logic behind the example procedure, which accepts an actor ID as input, calculates the total number of films they are associated with, and dynamically returns film titles using a refcursor.

Code Explanation:

  • The procedure calculates the total number of films for an actor and opens a refcursor with the film titles.
  • Learn how to call this procedure and fetch the results efficiently.
  • Handle exceptions effectively to ensure reliable database operations.

Whether you're a beginner or a seasoned database professional, this video provides insights into advanced PostgreSQL concepts with practical examples to elevate your skills!

Make sure to watch the full video, try the code, and share your experience in the comments.


-- How To Return Refcursor From PostgreSQL Procedure

-- Multiple Parameters Involved

create or replace procedure 

refcursor_cursor(in_actor_id in integer, lv_ref_cur refcursor, total_films OUT numeric)

language plpgsql

as $$

begin

select 

count(*) into total_films 

from 

film_actor fa, 

film f 

where 

fa.film_id = f.film_id 

and fa.actor_id = in_actor_id;


open lv_ref_cur for

select 

'Title: ' || f.title as Title 

from 

film_actor fa, film f 

where fa.film_id = f.film_id 

and fa.actor_id = in_actor_id;

exception when others then

raise notice 'Something Went Wrong';

end;

$$


call refcursor_cursor(1,'lv_refcursor',2);

fetch all in lv_refcursor;


call refcursor_cursor(1,'lv_refcursor',2);

Tuesday, 23 May 2023

How To Create And Call A Stored Procedure With Multiple/Many OUT Paramet...


In this comprehensive tutorial, we explore the process of creating and calling stored procedures with multiple OUT parameters in PostgreSQL using PL/pgSQL. Handling multiple outputs from a single stored procedure can greatly enhance the efficiency and flexibility of your database operations.

We begin by showing you how to define a stored procedure with several OUT parameters, explaining the syntax and logic behind the PL/pgSQL code. This allows you to return multiple pieces of data from a single procedure call, which is especially useful for complex operations that involve multiple result sets or calculations.

Next, we demonstrate how to call the stored procedure and retrieve the multiple outputs effectively. Through detailed examples, you'll learn how to handle and use these outputs in your PostgreSQL environment, enabling you to perform more sophisticated database operations.

We also cover best practices for managing and optimizing stored procedures with multiple OUT parameters, including tips for maintaining performance and avoiding common pitfalls. This tutorial is perfect for database administrators, developers, and anyone looking to deepen their understanding of PostgreSQL's powerful features.


PostgreSQL stored procedure, multiple OUT parameters PostgreSQL, PL/pgSQL stored procedure, PostgreSQL function with multiple outputs, create stored procedure PostgreSQL, call stored procedure PostgreSQL, PostgreSQL PL/pgSQL examples, SQL stored procedures, database functions PostgreSQL, PostgreSQL advanced tutorial

CREATE OR REPLACE PROCEDURE public.two_out_param_proc(
IN in_customer_name character varying,
IN in_address_id numeric,
OUT out_payment_amount numeric,
OUT out_max_payment_date date
)
LANGUAGE 'plpgsql'
AS $BODY$
 
 Declare
 Begin
  Select sum(amount), max(payment_date) 
into out_payment_amount, out_max_payment_date
From payment
where customer_id = (select customer_id from customer
where first_name = in_customer_name
and address_id = in_address_id);
exception
when others then
raise notice 'Something went wrong';
end;
$BODY$;
ALTER PROCEDURE public.two_out_param_proc(character varying, numeric, numeric, date)
    OWNER TO postgres;

select sum(amount) from payment where customer_id = 341;

select * from customer where customer_id = 341;

do $$
declare

v_payment_amount numeric(10,2);
v_max_payment_date date;

begin
call two_out_param_proc('Peter',346,v_payment_amount,v_max_payment_date);
raise notice 'The total payment amount is % and the latest payment date is %',v_payment_amount,v_max_payment_date;

end $$;

Monday, 22 May 2023

How To Create And Call A Stored Procedure With OUT Parameters In Postgre...


In this detailed tutorial, we delve into the process of creating and calling stored procedures with OUT parameters using the PL/pgSQL language in PostgreSQL. OUT parameters allow you to return multiple results from a stored procedure, making your database operations more efficient and versatile.

We start by guiding you through the syntax and structure needed to define a stored procedure with OUT parameters. You'll learn how to write a procedure that returns multiple values, which can be used to handle complex database tasks such as calculations, data transformations, or conditional operations.

Next, we demonstrate how to call the stored procedure and retrieve the OUT parameters' values. Through clear, step-by-step examples, you'll see how these procedures can be applied in real-world scenarios, helping you to streamline your database processes and reduce the complexity of your SQL queries.

We also cover best practices for managing and optimizing stored procedures in PostgreSQL, ensuring that your database operations are both effective and efficient. Whether you're a database administrator, developer, or just someone looking to enhance their PostgreSQL skills, this video provides valuable insights into advanced database management techniques.

PostgreSQL stored procedure, OUT parameters in PostgreSQL, PL/pgSQL stored procedure, create stored procedure PostgreSQL, call stored procedure PostgreSQL, PostgreSQL PL/pgSQL tutorial, SQL stored procedures, PostgreSQL OUT parameters, database management, PostgreSQL programming

create or replace procedure one_out_param_proc
(in_customer_name IN character varying,
 in_address_id IN numeric,
 out_payment_amount OUT numeric)
 Language 'plpgsql'
 AS $BODY$
 
 Declare
 Begin
  Select sum(amount) into out_payment_amount
From payment
where customer_id = (select customer_id from customer
where first_name = in_customer_name
and address_id = in_address_id);
exception
when others then
raise notice 'Something went wrong';
end;
$BODY$

select sum(amount) from payment where customer_id = 341;

select * from customer where customer_id = 341;

do $$
declare
v_payment_amount numeric(10,2);
begin
call one_out_param_proc ('Peter', 346, v_payment_amount);
raise notice 'Total Payment Amount is %',v_payment_amount;
end $$;

Wednesday, 16 November 2022

How To Call A Stored Procedure From Another Stored Procedure In PostgreS...


In this tutorial, we explore a powerful feature of PostgreSQL: calling a stored procedure from another stored procedure using PL/pgSQL. This capability allows you to create more modular and organized database operations, making your code easier to maintain, reuse, and manage.

The video starts by introducing the concept of stored procedures in PostgreSQL and explains why you might want to call one stored procedure from another. We then dive into the syntax and structure required to implement this technique, providing clear, step-by-step instructions. You'll see how to pass parameters between procedures, handle return values, and manage potential errors effectively.

Additionally, the tutorial includes practical examples that demonstrate how nested stored procedures can be used in real-world database applications, such as managing complex business logic, automating repetitive tasks, or structuring large codebases. We also cover best practices for writing PL/pgSQL code, ensuring that your stored procedures are efficient, readable, and maintainable.

By the end of this video, you'll have a solid understanding of how to leverage nested stored procedures in PostgreSQL, enabling you to build more sophisticated and flexible database applications.

Whether you’re a database administrator, developer, or just looking to deepen your PostgreSQL knowledge, this tutorial provides the insights and techniques you need to effectively use stored procedures in PL/pgSQL.

PostgreSQL stored procedures, calling stored procedure PostgreSQL, PL/pgSQL nested procedures, PostgreSQL tutorial, database management, PostgreSQL stored procedure example, SQL programming, advanced SQL, pgAdmin tutorial, PostgreSQL tips



/*In this video we will see how to call a stored procedure 
from another stored procedure in PostgreSQL PLpgSQL*/

-- Please watch till the end, and leave a like-comment.
-- Don't forget to subscribe the channel

CREATE OR REPLACE PROCEDURE public.proc1()
LANGUAGE 'plpgsql'
AS $BODY$
DECLARE
BEGIN
 RAISE NOTICE 'This is proc 1, it will be called from proc2';
END;
$BODY$;

-- This is proc1 I have created
-- This will display the output
-- so, lets create it


CREATE OR REPLACE PROCEDURE public.proc2()
LANGUAGE 'plpgsql'
AS $BODY$
DECLARE
BEGIN
RAISE NOTICE 'This is proc 2';
-- Calling another procedure proc1()
call proc1(); -- here it is
END;
$BODY$;

-- This is proc2
-- I am calling proc1 inside proc2
-- When it gets executed, it should give output like this

-- 'This is proc 2'
-- 'This is proc 1, it will be called from proc2'

-- Now, lets call the procedure

-- In the next video, I will show how to call a parameterized procedure or function with
-- OUT parameter
-- Please subscribe the channel to get updates for such videos

call proc2();

-- As shown, the procedure is getting called from another procedure
-- Thanks for watching
-- Please leave your comment for the video

-- Source codes you will find from video description