CREATE OR REPLACE FUNCTION drop_students_databases() RETURNS INTEGER AS '
DECLARE
  helpstr VARCHAR(300);
BEGIN
  helpstr  := ''Funkce pro zru�en� v�ech datab�z� u�ivatel�, jejich�\n'' ||
''jm�no (jm�no u�ivatele) vyhovuje masce p��kazu LIKE.\n\n'' ||
''nap�. SELECT drop_students_databases('' || quote_literal(''group%'') || '')\n\n'' ||
''pozn. mus�te b�t p�ihl�en jako u�ivatel postgres.\n'' ||
''autor: Pavel St�hule, stehule@kix.fsv.cvut.cz 19.1.2002\n'';

  RAISE NOTICE ''%'', helpstr;
  RETURN 0;
END;
' LANGUAGE 'plpgsql';

CREATE OR REPLACE FUNCTION drop_students_databases(varchar(100)) RETURNS INTEGER AS '
DECLARE 
  db RECORD;
  deleted INTEGER := 0;
  helpstr VARCHAR(300);
BEGIN 
  IF length($1) = 0 OR $1 ISNULL OR current_user() <> ''postgres'' THEN
helpstr  := ''Funkce pro zru�en� v�ech datab�z� u�ivatel�, jejich�\n'' ||
  ''jm�no (jm�no u�ivatele) vyhovuje masce p��kazu LIKE.\n\n'' ||
  ''nap�. SELECT drop_students_databases('' || quote_literal(''group%'') || '')\n\n'' ||
  ''pozn. mus�te b�t p�ihl�en jako u�ivatel postgres.\n'' ||
  ''autor: Pavel St�hule, stehule@kix.fsv.cvut.cz 19.1.2002\n'';
IF current_user <> ''postgres'' THEN
  RAISE EXCEPTION ''Funkci m��e volat pouze u�ivatel postgres\n\n%'', helpstr;
ELSE
  RAISE EXCEPTION ''Argument funkce mus� b�t nepr�zdn� �et�zec\n\n%'', helpstr;
END IF;
  END IF;
  
  FOR db IN 
select datname, usename from pg_database, pg_user 
  where datdba=usesysid and usename like $1
  LOOP
deleted := deleted + 1;
RAISE NOTICE ''Drop database %,%'', db.datname, db.usename;
EXECUTE ''drop database "'' || db.datname || ''"'';
  END LOOP;
  RETURN deleted;
END;
' LANGUAGE 'plpgsql';