Saludos...
Los procedimientos y funciones son programas internos de la base de datos programados de acuerdo al lenguaje interno de la base de datos es decir el dialecto que usa la base de datos, ejemplo en Sybase y Sqlserver el dialecto se llama TRANSACT-SQL en Oracle es PLSQL...
la diferencia es que la función retorna un único valor (entero, decimal, cadena, booleano, etc) el procedimiento puede o no retornar valores...
por ejemplo el resultado de una select te devolvería los valores de todas (o las que selecciones) las columnas de la tabla...
una función o procedimiento puede ser ejecutado desde una aplicación o desde la misma base de datos en un trigger u otro procedimiento o función...
Espero que te aclare el concepto...