1.自定义函数必须有返回值,标量值或者表值。存储过程可以没有返回值(存储过程是通过参数返回的,可以有多个或者没有);
2.对于存储过程来说可以返回参数,如记录集,而函数只能返回值或者表对象。函数只能返回一个变量;而存储过程可以返回多个。存储过程的参数可以有IN,OUT,INOUT三种类型,而函数只能有IN类型。存储过程声明时不需要返回类型,而函数声明时需要描述返回类型,且函数体中必须包含一个有效的RETURN语句。
3.存储过程只能单独使用(exec Procedure),函数可以作为查询语句的一部分来调用,例如表值函数可以跟在select * from后面。。