PostgreSQL - FOR, FOR EACH

 
Vista:
sin imagen de perfil
Val: 3
Ha disminuido su posición en 4 puestos en PostgreSQL (en relación al último mes)
Gráfica de PostgreSQL

FOR, FOR EACH

Publicado por Pedro (1 intervención) el 15/10/2020 14:52:19
Buenas, estoy aprendiendo acerca de estos tipos de bucles, alguien tiene información o podría explicarme como usarlos en PostgreSQL.

Gracias de antemano.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Francisco
Val: 256
Oro
Ha mantenido su posición en PostgreSQL (en relación al último mes)
Gráfica de PostgreSQL

FOR, FOR EACH

Publicado por Francisco (110 intervenciones) el 15/10/2020 20:32:41
Hola

Primera variante FOR

1
2
3
4
5
6
7
8
9
10
11
12
DO
$$
DECLARE
	i integer = 0;
BEGIN
	FOR i IN 0..10
	LOOP
		RAISE NOTICE 'Valor de la variable i es %', i;
	END LOOP;
END
$$
LANGUAGE plpgsql;

Segunda variante FOR

1
2
3
4
5
6
7
8
9
10
11
12
DO
$$
DECLARE
	i integer = 0;
BEGIN
	FOR i IN 0..10 STEP BY 2
	LOOP
		RAISE NOTICE 'Valor de la variable i es %', i;
	END LOOP;
END
$$
LANGUAGE plpgsql;

Tercera variante FOR

1
2
3
4
5
6
7
8
9
10
11
12
DO
$$
DECLARE
	i integer = 0;
BEGIN
	FOR i IN REVERSE 10..0
	LOOP
		RAISE NOTICE 'Valor de la variable i es %', i;
	END LOOP;
END
$$
LANGUAGE plpgsql;

Cuarta variante FOR

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
DO
$$
DECLARE
	rec record;
BEGIN
	DROP TABLE IF EXISTS departamentos CASCADE;
	CREATE TABLE departamentos(
  	id bigserial NOT NULL,
  	name varchar(100) NOT NULL,
  	CONSTRAINT departamentos_pk PRIMARY KEY (id)
	);
 
	INSERT INTO departamentos(name) values('Compras');
	INSERT INTO departamentos(name) values('Almacen');
	INSERT INTO departamentos(name) values('Logistica');
	INSERT INTO departamentos(name) values('Produccion');
	INSERT INTO departamentos(name) values('Mercadeo');
	INSERT INTO departamentos(name) values('Comercial');
	INSERT INTO departamentos(name) values('I+D');
	INSERT INTO departamentos(name) values('Adiministracion');
	INSERT INTO departamentos(name) values('Sistemas');
 
	FOR rec IN
		SELECT * FROM departamentos
	LOOP
		RAISE NOTICE '% ==> %', rec.id, rec.name;
	END LOOP;
END
$$

Quinta variante FOR

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
DO
$$
DECLARE
	word varchar;
	mtx varchar[];
BEGIN
 
	mtx := '{Hola,Mundo}'::varchar[];
 
	FOREACH word IN ARRAY mtx
  	LOOP
		RAISE NOTICE 'Palaba encontrada ==> %', word;
  	END LOOP;
END
$$

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar