2009-08-27 12 views

risposta

7

Non è la funzione che restituisce il valore, è il SELECT hai usato per chiamare. Se non restituisce alcuna riga, non esegue la tua funzione.

4

Stai andando bene. Non è necessario aggiungere altro.

Il risultato della riga è nullo, quindi è un reso nulla.

Non penso ci sia qualcosa che puoi fare al riguardo. Controllando le mie funzioni di vuoto tutte sono proprio come le tue.

restituisce nulla come $$ e nessuna dichiarazione di ritorno nel blocco di codice.

+1

Ma come può quel metodo si chiama? – Peymankh

+0

SELECT * FROM void_function(); –

+0

Forse è più facile usare 'PERFORM void_function();'. – Cromax

6

È possibile ottenere "nulla restituito" abusando di set-ritorno funzioni:

semplice funzione:

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

ora è possibile:

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

Nel caso in cui non funziona per te (mi dispiace, sto usando 8.5), prova con questo approccio:

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

I parametri sono irrilevanti, ma:

  • È necessario> 1 di loro
  • Devono essere chiamato

E ora è possibile:

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