stored query ejemplos desde create consultas cero aprender postgresql plpgsql postgresql-9.1

query - return table postgresql



SELECT.. INTO para crear una tabla en PL/pgSQL (1)

Tratar

CREATE TEMP TABLE mytable AS SELECT * FROM orig_table;

Por http://www.postgresql.org/docs/current/static/sql-selectinto.html

CREATE TABLE AS es funcionalmente similar a SELECT INTO. CREATE TABLE AS es la sintaxis recomendada, ya que esta forma de SELECT INTO no está disponible en ECPG o PL / pgSQL, porque interpretan la cláusula INTO de manera diferente. Además, CREATE TABLE AS ofrece un superconjunto de la funcionalidad proporcionada por SELECT INTO.

Quiero usar SELECT INTO para hacer una tabla temporal en una de mis funciones. SELECT INTO funciona en SQL pero no en PL / pgSQL.

Esta declaración crea una tabla llamada mytable (si existe orig_table como una relación):

SELECT * INTO TEMP TABLE mytable FROM orig_table;

Pero ponga esta función en PostgreSQL, y obtendrá el error: ERROR: "temp" is not a known variable

CREATE OR REPLACE FUNCTION whatever() RETURNS void AS $$ BEGIN SELECT * INTO TEMP TABLE mytable FROM orig_table; END; $$ LANGUAGE plpgsql;

Puedo SELECT INTO una variable de record de tipo dentro de PL / pgSQL, pero luego tengo que definir la estructura al obtener datos de ese registro. SELECT INTO es realmente simple: crear automáticamente una tabla de la misma estructura de la consulta SELECT . ¿Alguien tiene alguna explicación de por qué esto no funciona dentro de una función?

Parece que SELECT INTO funciona de manera diferente en PL / pgSQL, porque puede seleccionar las variables que ha declarado. Sin embargo, no quiero declarar mi estructura de tabla temporal. Me gustaría que solo creara la estructura automáticamente como lo hace en SQL.