Discussion:
Select into
Pablo Braulio
2007-12-15 23:21:50 UTC
Permalink
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hola a todos.

Por razones (casualidad) no vienen al caso, he descubierto que haciendo:

select campo into tabla from ....

crea una nueva tabla con los resultados de dicha consulta.

¿Es una tabla temporal?, ¿en que casos lo usais?.

Me ha entrado la duda pues el otro día me pusieron el ejemplo de una
funcion en el que había un select into.

CREATE OR REPLACE FUNCTION sesion_valida(text) RETURNS integer AS
$$
DECLARE
la_sesion ALIAS FOR $1;
duracion interval;
user_id integer;
BEGIN
duracion = '10 min'::interval;
-- Antes de otra cosa, vaciamos todas las sesiones expiradas
DELETE FROM sesion WHERE ultimo_uso+duracion < now();
-- Buscamos a qué usuario pertenece esta sesión
SELECT INTO user_id id_usuario FROM sesion WHERE sesion = la_sesion;
IF NOT FOUND THEN
RETURN NULL;
END IF;
UPDATE sesion SET ultimo_uso=now() WHERE sesion = la_sesion;
RETURN user_id;
END;
$$ LANGUAGE 'plpgsql';

Supongo que en este caso lo que se hace es almacenar el resultado del
select en una varible. ¿Es asi?. Lo digo pues haciendo un select de ese
modo fuera de una función no funciona.

SELECT into nomb nombre from clientes limit 1;
ERROR: error de sintaxis en o cerca de «into»
LINE 1: SELECT into nomb nombre from clientes limit 1;

- --


< ¡¡Nos vemos!! >
----------------------------
\
\
.::!!!!!!!:.
.!!!!!:. .:!!!!!!!!!!!!
~~~~!!!!!!. .:!!!!!!!!!UWWW$$$
:$$NWX!!: .:!!!!!!XUWW$$$$$$$$$P
$$$$$##WX!: .<!!!!UW$$$$" $$$$$$$$#
$$$$$ $$$UX :!!UW$$$$$$$$$ 4$$$$$*
^$$$B $$$$\ $$$$$$$$$$$$ d$$R"
"*$bd$$$$ '*$$$$$$$$$$$o+#"
"""" """""""
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFHZGGOK7lGsMchFswRAoV0AJ9vZpGB0Jn5cC4MItvBzeXJxPH37QCdFxlv
xjjNf8UcMFoM0fQCLmyftnY=
=64W3
-----END PGP SIGNATURE-----
--
TIP 6: ¿Has buscado en los archivos de nuestra lista de correo?
http://archives.postgresql.org/pgsql-es-ayuda
Alvaro Herrera
2007-12-17 14:29:19 UTC
Permalink
Post by Pablo Braulio
select campo into tabla from ....
crea una nueva tabla con los resultados de dicha consulta.
¿Es una tabla temporal?,
No.
Post by Pablo Braulio
¿en que casos lo usais?.
Cuando se quiere crear una tabla con los resultados de una consulta ;-)
Post by Pablo Braulio
Me ha entrado la duda pues el otro día me pusieron el ejemplo de una
funcion en el que había un select into.
Eso es distinto, porque en PL/pgSQL el SELECT INTO tiene otro
significado, que es asignar el resultado a una variable. No se debe
confundir el lenguaje PL/pgSQL con el lenguaje SQL!!
--
Alvaro Herrera http://www.CommandPrompt.com/
The PostgreSQL Company - Command Prompt, Inc.
--
TIP 8: explain analyze es tu amigo
Continúe leyendo en narkive:
Loading...