Re: [pgsql-es-ayuda] diferencias con funcion definida setof y no setof

2010-06-25 Por tema Emanuel Calvo Franco
El día 24 de junio de 2010 16:10,  gher...@fmed.uba.ar escribió:
 Hola chicos. Me asalto una duda.
 Cuando defino una funcion cualquiera, digamos
 CREATE FUNCTION pp()
 returns setof public.pp
 as
 $$
 select * from public.pp where id=99;
 $$

 En la tabla pp *no* existe ese id 99Bien.
 test=# SELECT * from pp();
  id| descripcion|
 +-+
 (0 filas)


 Cuando la ejecuto, me devuelve 0 registros. Fantastico

 Ahora, si defino la misma funcion, pero devolviendo simplemente
 `returns public.pp', al ejecutar la funcion me trae 1 (un!) registro con
 null'es
 test=# SELECT * from pp();
  id | descripcion
 +-
            |             |
 (1 fila)

 ??
 Algun motivo para esta variacion de comportamiento?
 PG 8.3.11


En realidad la funcion no retorna valor, la fila que te esta
devolviendo es la del select invocante:

SELECT NULL; (te devolvera una fila)
SELECT pp(); (una fila)
SELECT * FORM pp(); una fila


En la primera, la funcion al ser fuente de datos, es distinto porque
la consulta toma los datos del set (que esta vacio), sin embargo
cuando ejecutas una consulta 'sin' fuentes' de datos, te devolvera 1
fila ( now(), current_date, etc.)


-- 
  Emanuel Calvo Franco
www.emanuelcalvofranco.com.ar
 Join: http://www.thevenusproject.com/
-
Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org)
Para cambiar tu suscripci�n:
http://www.postgresql.org/mailpref/pgsql-es-ayuda


Re: [pgsql-es-ayuda] diferencias con funcion definida setof y no setof

2010-06-25 Por tema Gerardo Herzig
Emanuel Calvo Franco wrote:
 El día 24 de junio de 2010 16:10,  gher...@fmed.uba.ar escribió:
 Hola chicos. Me asalto una duda.
 Cuando defino una funcion cualquiera, digamos
 CREATE FUNCTION pp()
 returns setof public.pp
 as
 $$
 select * from public.pp where id=99;
 $$

 En la tabla pp *no* existe ese id 99Bien.
 test=# SELECT * from pp();
  id| descripcion|
 +-+
 (0 filas)


 Cuando la ejecuto, me devuelve 0 registros. Fantastico

 Ahora, si defino la misma funcion, pero devolviendo simplemente
 `returns public.pp', al ejecutar la funcion me trae 1 (un!) registro con
 null'es
 test=# SELECT * from pp();
  id | descripcion
 +-
| |
 (1 fila)

 ??
 Algun motivo para esta variacion de comportamiento?
 PG 8.3.11

 
 En realidad la funcion no retorna valor, la fila que te esta
 devolviendo es la del select invocante:
 
 SELECT NULL; (te devolvera una fila)
 SELECT pp(); (una fila)
 SELECT * FORM pp(); una fila
 
 
 En la primera, la funcion al ser fuente de datos, es distinto porque
 la consulta toma los datos del set (que esta vacio), sin embargo
 cuando ejecutas una consulta 'sin' fuentes' de datos, te devolvera 1
 fila ( now(), current_date, etc.)
 
 
Aha...aha...aha...ok...
No lo entiendo, pero se que no me convence. Es decir, esto rompe con
la logica de la capa de arriba de un sistema en el cual participo, en
el cual muchas veces usan la longitud del RecordSet o similar (de .NET)
para saber si la consulta obtuvo algun resultado. Con este asunto, esa
tecnica, que tiene (a mi entender) mucho sentido comun, no sirve, pues
el RecordSet nunca tiene longitud 0, lo que seria esperable para una
consulta que no encontro ningun registro!

Gracias por tu tiempo, Emanuel!

Saludos.
Gerardo
-
Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org)
Para cambiar tu suscripci�n:
http://www.postgresql.org/mailpref/pgsql-es-ayuda


[pgsql-es-ayuda] diferencias con funcion definida setof y no setof

2010-06-24 Por tema gherzig
Hola chicos. Me asalto una duda.
Cuando defino una funcion cualquiera, digamos
CREATE FUNCTION pp()
returns setof public.pp
as
$$
select * from public.pp where id=99;
$$

En la tabla pp *no* existe ese id 99Bien.
test=# SELECT * from pp();
 id| descripcion|
+-+
(0 filas)


Cuando la ejecuto, me devuelve 0 registros. Fantastico

Ahora, si defino la misma funcion, pero devolviendo simplemente
`returns public.pp', al ejecutar la funcion me trae 1 (un!) registro con
null'es
test=# SELECT * from pp();
 id | descripcion
+-
| |
(1 fila)

??
Algun motivo para esta variacion de comportamiento?
PG 8.3.11

Gracias!
Gerardo






-
Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org)
Para cambiar tu suscripción:
http://www.postgresql.org/mailpref/pgsql-es-ayuda