存储过程2

来源:互联网 发布:android 数据绑定 编辑:程序博客网 时间:2024/06/06 04:33
 

今天老师又带我们回顾了存储过程方面的知识:

  1)我们之所以要学习存储过程是因为使用存储过程可以一次性执行成批的SQL语句,不仅节省了我们的时间而且也提高了服务器的操作速度。

  2)存储过程的优点:

      1、批处理,减少客户和服务器之间的交流次数;

      2、服务器端运行,移植性好;

      3、安全要求高的行业;

      4、包含流程控制结构的SQL语句的集合

  3)存储过程的创建:

      语法格式: create database 

             create table

                  存储函数

              ;---每条语句的结束

 声明新的结束符(任选,避免在MySQL环境下有特殊含义)

 delimiter(分隔符)  $$

 delimiter          //

 delimiter          ;//

create procedure(过程)  p_name(in  c_name   数据类型)

注意:存储过程的主体部分,里面包含在过   程调用中必须执行的语句,以begin开始end结束。在存储过程体只有一个SQL语句时可以 省略begin_end标志。存储过程可以不加参数但名称后面的括号不可以省略,参数的不要等于列的名字。在创建存储过程前先使用deliminter命令将MYSQL语句的结束标志修改为其他符号。语法格式为: deliminter $$  ($$是用户定义的结束符)

     要想恢复使用分号作为结束符语法格式为: deliminter ;

;  deliminter //

     create procedure delete_student(in xh char(6))

      begin

          delete from xs where 学号=xh;

      end //

     deliminter ;

4)创建存储过程的步骤:

       1、检验mysql版本

       Select version()

       Select @@VERSION

       2、存储过程是属于数据库

        Show databases;

        Create database db1;

        Use db1;

      3、声明结束符

        Delimiter  //

      4、创建存储过程

       Create procedure p1() select “”; //

      5、调用存储过程

       Call p1()//

     6、恢复结束符

       Delimiter ;

    5)存储过程的调用:

              语法格式:Call  存储过程名(…);

6、参数的应用:

   IN 输入形参参数的使用set @x=3;或者select @x;

  调用必须有对应的实参(类型、数量)将信息带入到存储过程

          create procedure p10(IN  para1  int) set @x=para1;

或create procedure p10(para1 int) set @x=para1;

call p10(18);

select  @x

       用户定义变量:声明开始set @x=3;到断开连接结束不能和其他用户共享

作用域: 存储过程的局部变量:临时结果

作用范围:从声明位置开始,到end结束

语法格式 分步declare(声明)  var_name  type;

             var_name初值是null

             set  var_name=值;

Declare var_name type default 值;

1) Declare v1,v2 int;

Set v1=5,v2=8;

OUT 输出形参的使用\:用一个变量(实参位置)保存存储过程中返回的结果

例:Create procedure p14(OUT  para1  int)

begin

set para1=10;

end//

call p14(@x);

select @x;

select @y:=@x+1;

例如:函数 Function   fun1()

{。。。。

  Return   32

}

$name=fun1();

$a=$name+1;

3、嵌套

      Create procedure  p15()

   Begin

           Declare v1 char(10) default’ ‘outer

           Begin

             Declare v1 char(10) default ‘inner’;

             Select v1;

            End;

           Select v1;

          End//

三、流程控制结构

  第一组:条件分支结构

     IF语句

     CASE 语句

 语法: 

IF        条件1   THEN    语句集合

ELSEIF   条件2   THEN    语句集合】

ELSE     语句集合】

  注意:

形参中的变量如果和存储过程中的局部变量同名,会“覆盖”;

形参变量在存储过程中无大小写的要求;

例子:创建存储过程,如果参数<60分,给t1表插入数据0;否则给t1

      表插入2学分;

Create procedure  t1_add(para1 int)

BEGIN

   IF  para1>=60  THEN 

     Insert into t1 values(2);

   ELSE

     Insert into t1 values(0);

   END IF;

 END//

CALL t1_add(70);//

Select * from t1;//