The function must return a value, the procedure may or may not. Using the OUT parameter you can return a value using a procedure.