mysql 存储过程与函数有相似之处但是,却又不尽相同

1、书写存储过程

Sql 代码  

DROPPROCEDURE   IF      EXISTS  count_has_same_name_proc;  

CREATEPROCEDURE count_has_same_name_proc (xname VARCHAR(50 ) )  

 BEGIN

SELECTCOUNT(* )  FROM t_user WHEREname  = xname;  

 END;  

2、函数书写执行
错误写法

Sql 代码

 DROPFUNCTION   IF      EXISTS  count_has_same_name_func;  

  CREATEFUNCTION count_has_same_name_func ( xname  VARCHAR(50 ) )   
 RETURNSINT

     BEGIN

          SELECTCOUNT(id )   FROM t_user WHEREname = xname;  
    END;  

正确写法

Sql 代码

DROPFUNCTION   IF      EXISTS  count_has_same_name_func;  

CREATEFUNCTION count_has_same_name_func ( xname  VARCHAR(50 ) )   
 RETURNSINT

     BEGIN

              DECLARE  s  INT ;  
           SELECTCOUNT(id ) into s  FROM t_user WHEREname  = xname;  
         RETURN s;  
    END;  

注:trigger 和 function 都需要写成 select ...into  这种句式,否者会报 1415 错误。