Function : 1. Should return atleast one output parameter.Can return more than one parameter using OUT argument. 2. Parsed and compiled at runtime. 3.Cannot affect the state of database. 4.Can be invoked from SQL statement e.g. SELECT. 5. Functions are mainly used to compute values. 6. Functions won't supports deferred name resolution. (Table names without existence) Procedure: 1. Doesn't need to return values, but can return value. 2.Stored as a pseudo-code in database i.e. compiled form. 3.Can affect the state of database using commit etc. 4.Cannnot be invoked from SQL statements e.g. SELECT. 5.Procedures are mainly used to process the tasks. 6. Procedures supports deferred name resolution. Functions won't.