PostgreSQL: variables de tipo de fila

PostgreSQL usa las variables de tipo Fila para almacenar una fila completa de un conjunto de resultados devuelto por la instrucción select into .

Declaración :

Podemos declarar una variable de tipo de fila que tenga el mismo tipo de datos que el tipo de datos correspondiente en la fila de la tabla o la vista usando la siguiente sintaxis:

Syntax :
row_variable table_name/view_name %ROWTYPE;

Podemos usar la notación de punto (.) para acceder a cualquier campo de la variable de fila.

Syntax :
row_variable.field_name

Primero, creamos una tabla de muestra usando los siguientes comandos para realizar ejemplos:

CREATE TABLE employees (
 employee_id serial PRIMARY KEY,
 full_name VARCHAR NOT NULL,
 manager_id INT
);

Luego insertamos datos en nuestra tabla de empleados de la siguiente manera:

INSERT INTO employees (
 employee_id,
 full_name,
 manager_id
)
VALUES
 (1, 'M.S Dhoni', NULL),
 (2, 'Sachin Tendulkar', 1),
 (3, 'R. Sharma', 1),
 (4, 'S. Raina', 1),
 (5, 'B. Kumar', 1),
 (6, 'Y. Singh', 2),
 (7, 'Virender Sehwag ', 2),
 (8, 'Ajinkya Rahane', 2),
 (9, 'Shikhar Dhawan', 2),
 (10, 'Mohammed Shami', 3),
 (11, 'Shreyas Iyer', 3),
 (12, 'Mayank Agarwal', 3),
 (13, 'K. L. Rahul', 3),
 (14, 'Hardik Pandya', 4),
 (15, 'Dinesh Karthik', 4),
 (16, 'Jasprit Bumrah', 7),
 (17, 'Kuldeep Yadav', 7),
 (18, 'Yuzvendra Chahal', 8),
 (19, 'Rishabh Pant', 8),
 (20, 'Sanju Samson', 8);

La mesa es:

Ejemplo 1:

Lo siguiente ayudará a crear una variable de tipo de fila sel_employee de la tabla empleados

do $$
declare
  sel_employee employees%rowtype;
begin
  -- select employee with id 6    
  select *  
  from employees
  into sel_employee
  where employee_id = 6;
   
  raise notice 'The employee name is % and the manager id is %',
     sel_employee.full_name,
     sel_employee.manager_id;
end; $$;

Salida :

Ejemplo 2:

Lo siguiente ayudará a crear una variable de tipo de fila sel_employee de la tabla empleados con 2 columnas employee_id y full_name

do $$
declare
  sel_employee employees%rowtype;
begin
  -- select employee with id 12  
  select employee_id,full_name  
  from employees
  into sel_employee
  where employee_id = 12;
   
  raise notice 'The employee name is % and the length of the name is %',
     sel_employee.full_name,
     length(sel_employee.full_name);
end; $$;

Salida :

Publicación traducida automáticamente

Artículo escrito por ashutoshrathi 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 *