PL/pgSQL Select Into
Summary: in this tutorial, you will learn how to use the PL/pgSQL select into statement to select data from the database and assign it to a variable.
Introduction to PL/pgSQL Select Into statement
The select into statement allows you to select data from the database and assign it to a variable.
Here’s the basic syntax of the select into statement:
select column1, column2, ...
into variable1, variable2, ...
from table_expression;In this syntax,
- First, specify one or more columns from which you want to retrieve data in the selectclause.
- Second, place one or more variables after the intokeyword.
- Third, provide the name of the table in the fromclause.
The select into statement will assign the data returned by the select clause to the corresponding variables.
Besides selecting data from a table, you can use other clauses of the select statement such as join, group by, and having.
PL/pgSQL Select Into statement examples
Let’s take some examples of using the select into statement.
1) Basic select into statement example
The following example uses the select into statement to retrieve the number of actors from the actor table and assign it to the actor_count variable:
do
$$
declare
   actor_count integer;
begin
   -- select the number of actors from the actor table
   select count(*)
   into actor_count
   from actor;
   -- show the number of actors
   raise notice 'The number of actors: %', actor_count;
end;
$$;Output:
NOTICE:  The number of actors: 200In this example:
- First, declare a variable called actor_countthat stores the number of actors from theactortable.
- Second, assign the number of actors to the actor_countusing theselect intostatement.
- Third, display a message that shows the value of the actor_countvariable using theraise noticestatement.
2) Using the select into with multiple variables
The following example uses the select into statement to assign the first and last names of the actor id 1 to two variables:
do
$$
declare
   v_first_name varchar;
   v_last_name varchar;
begin
   -- select the first_name and last_name of the actor id 1
   select first_name, last_name
   into v_first_name, v_last_name
   from actor
   where actor_id = 1;
   -- show the full name
   raise notice '% %', v_first_name, v_last_name;
end;
$$;Output:
NOTICE:  Penelope GuinessHow it works.
First, declare two variables v_first_name and v_last_name with the types varchar:
v_first_name varchar;
v_last_name varchar;Second, retrieve the first_name and last_name of the actor id 1 from the actor table and assign them to the v_first_name and v_last_name variables:
select first_name, last_name
into v_first_name, v_last_name
from actor
where actor_id = 1;Third, show the values of v_first_name and v_last_name variables:
raise notice '% %', v_first_name, v_last_name;Because we assign data retrieved from the first_name and last_name columns of the actor table, we can use the type-copying technique to declare the v_first_name and v_last_name variables:
do
$$
declare
   v_first_name actor.first_name%type;
   v_last_name actor.last_name%type;
begin
   -- select the first_name and last_name of the actor id 1
   select first_name, last_name
   into v_first_name, v_last_name
   from actor
   where actor_id = 1;
   -- show the full name
   raise notice '% %', v_first_name, v_last_name;
end;
$$;Summary
- Use the select intostatement to select data from the database and assign it to a variable.