A Procedure Called with DO ... Parameters passed by DO ... WITH < Parm1 >, < parm2 >, ... Parameters are passed by reference (by default) Does not return any value
A function Called with FunctionName() Parameters passed by FunctionName(< Parm1 >, < parm2 >, ...) Parameters are passed by value (by default). The default passing can be altered with SET UDFPARAMS command Can return a valueThere are no other unique qualities of either. What makes a routine either a procedure or a function is HOW YOU CALL IT. If you DO it it is a procedure and if you use function syntax to call it it is a function.