# PL/pgSQL Row Types - Assign Complete Row to a Variable in PostgreSQL

> In PL/pgSQL, the row-type variables aka row variables are used to store a complete record of a result set into a specific variable.

The term PL/pgSQL refers to the Procedural Language/Postgres. In PL/pgSQL, the row-type variables aka row variables are used to store a complete record of a result set into a specific variable. Although, the row variables keep the whole row, however, an individual field of a specific row-type variable can be accessed using the dot syntax.

This post explains how to assign a complete row to a variable in Postgres using the row-type variables.

 **PL/pgSQL Row Types - Assign Complete Row to a Variable in Postgres**

To work with row variables, first, you must learn how to declare them. A row variable can hold a row returned by a Postgres table or a view. Here, is the basic syntax that allows you to declare the row variables:
    
    
    row_var_name tab_name%ROWTYPE;
    
    
    row_var_name view_name%ROWTYPE;

In this syntax:

\- “row_var_name” represents the variable’s name.  
\- “tab_name” and “view_name” represent the targeted table or view.  
\- The “tab_name” and “view_name” must be followed by the “%ROWTYPE” to declare a row variable.

Use the following dot syntax to access a specific field of a row-type variable.
    
    
    row_var_name.field_name;

Let’s learn the row-type variables practically.

 **Example 1: How to Assign a Complete Row to a Variable in Postgres?**

In the following example, we will utilize a sample table named “emp_bio” whose details are depicted in the following snippet:
    
    
    SELECT * FROM emp_bio;

Let's declare a row-type variable and assigned it a complete row:
    
    
    DO $$
    DECLARE emp_info emp_bio%ROWTYPE;
    BEGIN
    SELECT *
    INTO emp_info
    FROM emp_bio
    WHERE e_id = 3;
    RAISE NOTICE 'Employee INFO: %', emp_info;
    END;
    $$

In the above code:

\- A row-type variable named “emp_info” is declared.  
\- The INTO keyword is used to specify the selected row into the “emp_info” variable.  
\- The FROM clause keeps the name of the targeted table, i.e., “emp_bio”.  
\- The WHERE clause defines the selection criteria.  
\- The “RAISE NOTICE” is used to display the variable’s value.

The output shows the complete row that is stored in the “emp_info” variable.

 **Example 2: How to Access a Specific Field of a Row-Type Variable in Postgres?**

In the following code snippet, we will utilize the dot syntax to access an individual field of the row-type variable:
    
    
    DO $$
    DECLARE emp_info emp_bio%ROWTYPE;
    BEGIN
    SELECT *
    INTO emp_info
    FROM emp_bio
    WHERE e_id = 3;
    RAISE NOTICE 'Employee Salary: %', emp_info.emp_sal;
    END;
    $$

The output verifies that an individual field of the row-type variable has been successfully accessed.

 **Conclusion**

In PL/pgSQL, the row-type variables aka row variables are used to store a complete record of a result set into a specific variable. A row-type variable can be declared with the same data type as the table’s selected row by using the “row_var_name tab_name%ROWTYPE” syntax. The dot syntax is used to access an individual field of a row-type variable. This post explained how to declare, assign, and access a row-type variable in Postgres using suitable examples.

---
[View this page online](https://www.commandprompt.com/education/plpgsql-row-types-assign-complete-row-to-a-variable-in-postgresql/)