mysql存储过程和函数

一 存储过程和函数简介:
       存储过程和函数是在数据库中定义一些SQL语句的集合,然后直接调用这些存储过程和函数来执行已经定义好的SQL语句。
二存储过程的优缺点
      1.由于应用程序随着时间推移会不断更改,增删功能,T-SQL过程代码会变得更复杂,StoredProcedure为封装此代码提供了一个替换位置。即,一个存储程序是可以被存储在服务器中的一套SQL语句。一旦它被存储了,客户端不需要再重新发布单独的语句,而是可以引用存储程序来替代。
      2.可维护性高,更新存储过程通常比更改、测试以及重新部署程序集需要较少的时间和精力。
      3..增强安全性:
      a、通过向用户授予对存储过程(而不是基于表)的访问权限,它们可以提供对特定数据的访问;
      b、提高代码安全,防止 SQL注入(但未彻底解决,例如,将数据操作语言--DML,附加到输入参数);
      缺点:
      1.如果更改范围大到需要对输入存储过程的参数进行更改,或者要更改由其返回的数据,则您仍需要更新程序集中的代码以添加参数、更新 GetValue() 调用,等等,这时候估计比较繁琐了。
      2.可移植性差:由于存储过程将应用程序绑定到数据库上,因此使用存储过程封装业务逻辑将限制应用程序的可移植性。如果应用程序的可移植性在您的环境中非常重要,则将业务逻辑封装在不特定于 RDBMS 的中间层中可能是一个更佳的选择。
创建,改变,移除和查询存储程序和函数
     1创建:CREATE PROCEDURE和CREATE FUNCTION
    mysql存储过程和函数
    查看函数
    mysql存储过程和函数
    查看测试
   mysql存储过程和函数
  注意事项:(1) 指定参数为IN, OUT, 或INOUT 只对PROCEDURE是合法的。(FUNCTION参数总是被认为是IN参数) 
(2)数据库移除的时候,与它关联的所有存储子程序也都被移除。 
(3)RETURNS字句只能对FUNCTION做指定,对函数而言这是强制的。它用来指定函数的返回类型,而且函数体必须包含一个RETURN value语句。
(4)存储子程序不能使用LOAD DATA INFILE。 
(5)当使用delimiter命令时,你应该避免使用反斜杠(‘\’)字符,因为那是MySQL的转义字符。
(6)存储过程的创建和函数大同小异,在调用的时候要用call   来调用。
(7)不能在一个存储过程中删除另一个存储过程,只能调用另一个存储过程。
2删除函数或存储过程:   drop procedure|function    procedurename|functionname;
3常用语句:
  (1)show   function|procedure  status    //程序的特征,如数据库,名字,类型,创建者及创建和修改日期
   (2)show function|procedure  status like 'name'  //查看某一个的相关信息



你可能感兴趣的:(mysql存储过程和函数)