2009-08-27 11 views

Respuesta

7

No es la función que devuelve el valor, que es el SELECT que utilizó para llamarlo. Si no devuelve ninguna fila, no ejecuta su función.

4

Lo está haciendo bien. No necesitas agregar nada más.

El resultado de la fila es nulo, por lo que es un retorno nulo.

No creo que haya algo que puedas hacer al respecto. Verificando mis funciones vacías, todas son como las tuyas.

devuelve void como $$ y sin declaración de devolución en el bloque de código.

+1

Pero ¿cómo puede ese método se llama? – Peymankh

+0

SELECCIONAR * FROM void_function(); –

+0

Quizás sea más fácil usar 'PERFORM void_function();'. – Cromax

6

Usted puede lograr "nada devueltos" al abusar de puesta a devolver funciones:

función simple:

create function x() returns setof record as $$ 
begin 
return; 
END; 
$$ language plpgsql; 

Ahora puede:

# select x(); 
x 
--- 
(0 rows) 

En caso de que no funciona para ti (lo siento, estoy usando 8.5), intenta con este enfoque:

# create function x (OUT o1 bool, OUT o2 bool) returns setof record as $$ 
begin 
return; 
END; 
$$ language plpgsql; 
CREATE FUNCTION 

Los parámetros son irrelevantes, pero:

  • Es necesario> 1 de ellos
  • tienen que ser llamado

Y ahora se puede:

# select * from x(); 
o1 | o2 
----+---- 
(0 rows) 
Cuestiones relacionadas