感觉好象差不多,唯一的区别是,用户自定义函数可以在SQL语句中(比如查询语句的某一列,类似max(num)),其它好像没区别了,都是编写功能块然后调用,传参什么的语法也差不多。

解决方案 »

  1.   

    函数不能用exec执行,存储过程要用exec执行.
      

  2.   

    存储过程需要单独执行;   
      函数可以随处调用。   
        
      存储过程是保存起来的可以接受和返回用户提供的参数的   Transact-SQL   语句的集合。   
      可以创建一个过程供永久使用,或在一个会话中临时使用(局部临时过程),或在所有会话中临时使用(全局临时过程)。   
      也可以创建在   Microsoft®   SQL   Server™   启动时自动运行的存储过程。   
        
      用户定义函数,它是返回值的已保存的   Transact-SQL   例程。用户定义函数不能用于执行一组修改全局数据库状态的操作。   
      与系统函数一样,用户定义函数可以从查询中唤醒调用。也可以像存储过程一样,通过   EXECUTE   语句执行。   
      
      

  3.   

    函数中有些限制吧,不能执行动态SQL咯,不能用getdate()等等的,
    存储过程不能像函数那样可以直接返回一个表。