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';