Historically, functions must return a value, while procedures do not. Note that procedures can return values via OUT parameters in many databases, but standard definition-level differentiation is that procedures do not return values directly via a RETURN statement.