2009-08-27 6 views

Odpowiedz

7

To nie jest funkcja, która zwraca wartość, to jest SELECT użyłeś to nazwać. Jeśli nie zwróci żadnych wierszy, to nie działa twoja funkcja.

4

Dobrze sobie radzisz. Nie musisz dodawać niczego więcej.

Wynik rzędu jest zerowy, więc jest to powrót próżny.

Nie sądzę, że jest coś, co można z tym zrobić. Sprawdzam moje funkcje pustki, wszystkie są takie jak twoje.

zwraca wartość void jako $$ i nie zwraca instrukcji return w bloku kodu.

+1

Ale w jaki sposób tę metodę nazwać? – Peymankh

+0

SELECT * FROM void_function(); –

+0

Być może łatwiej jest użyć 'PERFORM void_function();'. – Cromax

6

można osiągnąć "nic nie powrócił" nadużywając ustalonych-powrocie funkcje:

Prosta funkcja:

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

Teraz można:

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

W przypadku, gdy nie działa Ci (przepraszam, używam 8.5), spróbuj z tym podejściem:

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

Parametry są nieistotne, ale:

  • Trzeba> 1 z nich
  • Muszą być nazwany

I teraz można:

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