PostgreSQL - Create view DENTRO de una funcion

 
Vista:

Create view DENTRO de una funcion

Publicado por Juannm (1 intervención) el 10/12/2006 13:46:35
Hola! A ver si me podeis ayudar con este problema...

Lo que necesito es: escribir una funcion que haga inserciones de entradas de cine. Para ello he pensado en escribir "algo" que contenga de donde sacar los datos para la insercion, y despues el INSERT propiamente dicho.

Lo que he escrito es: una funcion que haga inserciones, y para simplificar el codigo de la sentencia INSERT, primero creo una vista. ¡El problema es que no se crea bien!

Una version reducida es:

create function inserta_entrada(nombre_cine int, numero_sala int, numero_butaca int) returns void as $$
create view mi_compra as
select id_cine from cines where nombre=$1 and sala=$2 and butaca=3;

insert into entradas values (precio, idcine, idcliente)
select 6.00, id_cine, id_cliente from mi_compra, clientes where clientes.nombre='Luis';

$$ language SQL;

Como veis, primero creo una vista con el id_cine correspondiente a la compra de la entrada. Luego hago el insert con dicho id_cine y el nombre del cliente.

El problema es que en el insert, psql me da un error diciendo que "la relacion mi_compra no existe" :(

Por un lado: ¿esta es la mejor manera de hacer lo que quiero? y por otro: ¿como puedo hacer que la vista "mi_compra" exista para el insert?

De momento lo que he hecho es NO usar la vista, y poner su codigo directamente en el campo from del insert, pero ahi stoy perdiendo legibilidad porque el codigo de la vista es bastante mas largo.

A ver si me podeis dar una pista.
Saludos!
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

RE:Create view DENTRO de una funcion

Publicado por Julio (334 intervenciones) el 23/12/2006 15:32:41
Lo que pasa es que una Vista es un espejo de una tabla con datos especificos, en un From de un SQL normal, creo YO que solo puedes hacer referencia a tablas

No se si en Oracle se puede hacer eso, pero en PostgreSQL y SQL Estandar no lo se
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Create view DENTRO de una funcion

Publicado por Mariana Stein (1 intervención) el 20/09/2008 20:45:19
Perdón por estar fuera de tema. quería saber si sos Juan Angel Napal Montoya porque estoy tratando de ponerme en contacto con vos. Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar