PostgreSQL usa variables de tipo de registro que simplemente actúan como marcadores de posición para las filas de un conjunto de resultados, similar a una variable de tipo de fila . Sin embargo, a diferencia de las variables de tipo fila, no tienen una estructura predefinida. Su estructura solo se determina después de asignarles una fila. Una variable de tipo de registro también puede cambiar su estructura después de que se reasigna a otra fila.
Declaración:
Podemos declarar una variable de tipo de registro simplemente usando un nombre de variable seguido de la palabra clave de registro .
Syntax: variable_name record;
Podemos usar la notación de punto (.) para acceder a cualquier campo de la variable de tipo de registro. Es importante tener en cuenta que debemos asignar una variable de tipo de registro antes de acceder a su contenido, de lo contrario, obtendremos un error.
Syntax: record_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:
La siguiente consulta muestra cómo podemos usar variables de tipo de registro en conjeturas con la instrucción select into .
do $$ declare rec1 record; begin -- select the employee select employee_id,full_name,manager_id into rec1 from employees where employee_id = 13; raise notice '% - %(Manager id=%)', rec1.employee_id, rec1.full_name, rec1.manager_id; end; $$ language plpgsql;
Salida :
En este ejemplo, seguimos los siguientes pasos:
- Primero declaramos la variable de tipo de registro rec1 en el área de declaración.
- Luego usamos la selección en la declaración para seleccionar una fila de la tabla empleados en la variable rec1 cuya identificación de empleado es 13.
- Luego usamos la notación de puntos para acceder al contenido de la variable rec1 y luego imprimimos la información
Ejemplo 2:
La siguiente consulta muestra cómo podemos usar variables de tipo de registro en conjetura con la declaración de bucle for .
do $$ declare rec1 record; begin for rec1 in select employee_id, full_name from employees where employee_id > 12 order by employee_id loop raise notice '% - %', rec1.employee_id, rec1.full_name; end loop; end; $$;
Producción:
Este ejemplo muestra cómo podemos reasignar una variable de tipo de registro.
En este ejemplo, seguimos los siguientes pasos:
- Primero declaramos una variable de tipo de registro rec1 en el área de declaración.
- Luego usamos la declaración de bucle for para iterar sobre el contenido de la tabla de empleados. En cada iteración, asignamos una nueva fila a la variable de tipo de registro rec1 .
- Luego usamos la notación de puntos para acceder al contenido de la variable rec1 y luego imprimimos la información para cada iteración.
Publicación traducida automáticamente
Artículo escrito por ashutoshrathi y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA