SQL Anfrage in Funktion umschreiben?

Hallo,

Ich soll für eine Datenbank, die ähnlich eines sozialen Netzwerkes funktioniert, eine Funktion schreiben, die die Größe des Freundschaftsnetzwerkes berechnet, schreiben. Dabei sollen nur Freunde berücksichtigt werden, die einen Freundschaftsgrad über 8 haben.
Eine passende SQL Abfrage, die auch funktioniert habe ich bereits geschrieben:

SELECT COUNT(freundvon) AS anzahl
FROM istbefreundetmit
WHERE freundschaftsgrad>8 AND befreundetmit=1;

Wobei befreundetmit die ID des gefragten Freundes ist, dessen Netzwerkgröße berechnet wird. Jetzt soll ich daraus aber eine Funktion schreiben. Mein bisheriger Versuch sieht so aus:

CREATE OR REPLACE FUNCTION calculate_network(int) RETURNS int
as’
SELECT COUNT(freundvon) AS anzahl
FROM istbefreundetmit
WHERE freundschaftsgrad>8 AND befreundetmit=$1;
end;’
language ‚sql‘;

Das Problem ist nun, dass mir postgresql beim erstellen der Funktion sagt:
„return type mismatch in function declared to return integer“

Meine Frage: Warum ist das so? Die Count-Funktion sollte doch eigentlich einen int Wert ausgeben, welcher durch select an die Funktion zurück gegeben wird, oder nicht? Gibt es eine andere Möglichkeit die Funktion calculate_network(int) zu schreiben?

Vielen Dank schonmal im Voraus! (Ich habe leider von Datenbanken noch nicht allzuviel Ahnung …)

Liebe Grüße,
Munis

Hallo Munis,

Das Problem ist nun, dass mir postgresql beim erstellen der
Funktion sagt:
„return type mismatch in function declared to return integer“
Die Count-Funktion sollte doch
eigentlich einen int Wert ausgeben

count gibt einen bigint Wert zurück.
http://www.postgresql.org/docs/8.2/static/functions-…
Probiere also mal bigint statt int

Viele Grüße
Marvin

Danke, habe nur ein RETURN vergessen ^^