mysql的 储存过程 和 储存函数 有什么区别 ?在网上找不到相关资料, 除写法和调用命令不同, 有什么其它的区别吗? 

解决方案 »

  1.   

    http://dev.mysql.com/doc/refman/5.1/zh/stored-procedures.html
    20. 存储程序和函数
    20.1. 存储程序和授权表
    20.2. 存储程序的语法
    20.2.1. CREATE PROCEDURE和CREATE FUNCTION
    20.2.2. ALTER PROCEDURE和ALTER FUNCTION
    20.2.3. DROP PROCEDURE和DROP FUNCTION
    20.2.4. SHOW CREATE PROCEDURE和SHOW CREATE FUNCTION
    20.2.5. SHOW PROCEDURE STATUS和SHOW FUNCTION STATUS
    20.2.6. CALL语句
    20.2.7. BEGIN ... END复合语句
    20.2.8. DECLARE语句
    20.2.9. 存储程序中的变量
    20.2.10. 条件和处理程序
    20.2.11. 光标
    20.2.12. 流程控制构造
    20.3. 存储程序、函数、触发程序和复制:常见问题
    20.4. 存储子程序和触发程序的二进制日志功能
      

  2.   

    存储程序和函数是用CREATE PROCEDURE和CREATE FUNCTION语句创建的子程序。一个子程序要么是一个程序要么是一个函数。使用CALL语句来调用程序,程序只能用输出变量传回值。就像别其它函数调用一样,函数可以被从语句外调用(即通过引用函数名),函数能返回标量值。存储子程序也可以调用其它存储子程序。 http://dev.mysql.com/doc/refman/5.1/zh/stored-procedures.html
    20. 存储程序和函数
    20.1. 存储程序和授权表
    20.2. 存储程序的语法
    20.2.1. CREATE PROCEDURE和CREATE FUNCTION
    20.2.2. ALTER PROCEDURE和ALTER FUNCTION
    20.2.3. DROP PROCEDURE和DROP FUNCTION
    20.2.4. SHOW CREATE PROCEDURE和SHOW CREATE FUNCTION
    20.2.5. SHOW PROCEDURE STATUS和SHOW FUNCTION STATUS
    20.2.6. CALL语句
    20.2.7. BEGIN ... END复合语句
    20.2.8. DECLARE语句
    20.2.9. 存储程序中的变量
    20.2.10. 条件和处理程序
    20.2.11. 光标
    20.2.12. 流程控制构造
    20.3. 存储程序、函数、触发程序和复制:常见问题
    20.4. 存储子程序和触发程序的二进制日志功能
      

  3.   

    存储过程只能单独调用,call sp_name,完成一系列的数据操作,从而节省网络传输所需要的时间。
    函数在语句中调用,一般用来完成一些特定的数据库本身没有的函数的功能。
    凭感觉说的,不知道对不对。
      

  4.   

    指定参数为IN, OUT, 或INOUT 只对PROCEDURE是合法的。(FUNCTION参数总是被认为是IN参数) RETURNS字句只能对FUNCTION做指定,对函数而言这是强制的。它用来指定函数的返回类型,而且函数体必须包含一个RETURN value语句。 对于存储函数(而不是存储程序),禁止下述额外语句:·         执行显式或隐式提交或回滚操作的语句。·         返回结果集的语句。包括没有INFO子句的SELECT语句,以及SHOW语句。能够用SELECT … INTO,或使用光标和FETCH语句处理结果集的函数。·         FLUSH语句。注意,尽管能够在存储程序中使用FLUSH,但不能从存储函数或触发程序调用这类存储程序。
      

  5.   

    记的5.0是这样的,5.1不知有没有改变
    1、存储过程能返回结果集,多个变量(用OUT参数),函数只能返回一个值
    2、函数不改写BINLOG,所以有数据修改的得用存储过程
      

  6.   

    to F5 : 函数不能写binlog, 不明白是什么意思 ?
      

  7.   

    to F4 :储存过程和函数都有那些关键字? 分别是什么功能? 在手册里找不到
      

  8.   

    binlog记录查询修改语句记录但是对于rollback 不会记录 存储过程的操作很有可能对表数据没有yingxiangmysql内部处理不写入binlog好像是这样 记不太清了