CREATE OR REPLACE FUNCTION num_auto_cin()
RETURNS INTEGER AS $$
DECLARE
	numax INTEGER;
BEGIN
	SELECT MAX(idvin) INTO numax FROM vin;
	RETURN numax+1;
END
$$ LANGUAGE plpgsql;

SELECT num_auto_vin();


#2.1 - Renvoie le numéro du vin dont le nom est donné en paramètre.
CREATE OR REPLACE FUNCTION num_vin( nomvin VARCHAR(25) )
RETURNS INTEGER AS $$
DECLARE
	numvin INTEGER;
BEGIN
	SELECT idvin INTO numvin FROM vin WHERE nom = nomvin;
	RETURN numvin;
END
$$ LANGUAGE plpgsql;

#2.2 - Même chose, avec exceptions
CREATE OR REPLACE FUNCTION num_vin( nomvin VARCHAR(25) )
RETURNS INTEGER AS $$
DECLARE
	numvin INTEGER;
BEGIN
	SELECT idvin INTO numvin FROM vin WHERE nom = nomvin;
	RETURN numvin;

EXCEPTION
	WHEN NO_DATA_FOUND THEN
	RETURN -1;
	WHEN TOO_MANY_ROWS THEN
	RETURN -2;

END
$$ LANGUAGE plpgsql;