金沙棋牌app手机下载

当前位置:金沙棋牌 > 金沙棋牌app手机下载 > 存储过程,mysql5存储过程入门创建

存储过程,mysql5存储过程入门创建

来源:http://www.logblo.com 作者:金沙棋牌 时间:2019-11-05 18:51

call 存储过程名字 (实参列表);

MySql数据库之存储过程学习

之前在工作中总是听别人提到存储过程,觉得是个很高深的东西,利用工作之余,看了下相关的知识,现将学习知识总结如下,希望可以为刚学习的人提供些许帮助。

 

开发环境:Navicat For Mysql。

 

MySQL存储过程

 

1.1、CREATE  PROCEDURE  (创建)

CREATE PROCEDURE存储过程名 (参数列表)

   BEGIN

         SQL语句代码块

END

注意:

由括号包围的参数列必须总是存在。如果没有参数,也该使用一个空参数列()。每个参数默认都是一个IN参数。要指定为其它参数,可在参数名之前使用关键词 OUT或INOUT

实例演练:

eg1,带(输出参数)返回值的存储过程:

1、建表

create table abin5(

id int,

name5 VARCHAR(39)

)

2、创建存储过程

create procedure pabin5(out n int)

BEGIN

 select count(*) from abin5;

END

3、测试存储过程

call pabin5(@n)

 

eg2,带输入参数的存储过程:

1、建立存储过程

create procedure pabin6(in n int)

BEGIN

 SELECT * FROM abin5 where id=n;

END

2、测试存储过程

SET @n=1;

CALL pabin6(@n)

或者

CALL pabin6(1)

在mysql客户端定义存储过程的时候使用delimiter命令来把语句定界符从;变为//。

当使用delimiter命令时,你应该避免使用反斜杠(‘"’)字符,因为那是MySQL的转义字符。

如:

mysql> delimiter //

mysql> CREATE PROCEDURE simpleproc (OUT param1 INT)

    -> BEGIN

    ->   SELECT COUNT(*) INTO param1 FROM t;

    -> END

    -> //

Query OK, 0 rows affected (0.00 sec)

1.2         ALTER  PROCEDURE (修改)

ALTER PROCEDURE 存储过程名SQL语句代码块

这个语句可以被用来改变一个存储程序的特征。

1.3         DROP  PROCEDURE (删除)

DROP PROCEDURE  IF  EXISTS存储过程名

 

eg:DROP PROCEDURE IF EXISTS proc_employee (proc_employee 存储过程名)

 

这个语句被用来移除一个存储程序。不能在一个存储过程中删除另一个存储过程,只能调用另一个存储过程

1.4         SHOW  CREATE  PROCEDURE(类似于SHOW CREATE TABLE,查看一个已存在的存储过程)

SHOW CREATE PROCEDURE 存储过程名

1.5         SHOW  PROCEDURE  STATUS (列出所有的存储过程)

SHOW  PROCEDURE  STATUS

 

1.6         CALL语句(存储过程的调用)

CALL 存储过程名(参数列表)

 

CALL语句调用一个先前用CREATE PROCEDURE创建的程序。

CALL语句可以用声明为OUT或的INOUT参数的参数给它的调用者传回值。

存储过程名称后面必须加括号,哪怕该存储过程没有参数传递

1.7         BEGIN ... END(复合语句)

[begin_label:] 

BEGIN

    [statement_list]

END 

[end_label]

存储子程序可以使用BEGIN ... END复合语句来包含多个语句。

 

statement_list 代表一个或多个语句的列表。statement_list之内每个语句都必须用分号(;)来结尾。

 

复合语句可以被标记。除非begin_label存在,否则end_label不能被给出,并且如果二者都存在,他们必须是同样的。

 

1.8         DECLARE语句(用来声明局部变量)

DECLARE语句被用来把不同项目局域到一个子程序:局部变量

 

DECLARE仅被用在BEGIN ... END复合语句里,并且必须在复合语句的开头,在任何其它语句之前。

 

1.9         存储程序中的变量

1.1             DECLARE局部变量

 

DECLARE var_name[,...] type [DEFAULT value]

这个语句被用来声明局部变量。

要给变量提供一个默认值,请包含一个DEFAULT子句。

值可以被指定为一个表达式,不需要为一个常数。

如果没有DEFAULT子句,初始值为NULL。

局部变量的作用范围在它被声明的BEGIN ... END块内。

它可以被用在嵌套的块中,除了那些用相同名字声明变量的块。

1.2             变量SET语句

 

SET var_name = expr [, var_name = expr] 

在存储程序中的SET语句是一般SET语句的扩展版本。

被参考变量可能是子程序内声明的变量,或者是全局服务器变量。

在存储程序中的SET语句作为预先存在的SET语法的一部分来实现。这允许SET a=x, b=y, ...这样的扩展语法。

其中不同的变量类型(局域声明变量及全局和集体变量)可以被混合起来。

这也允许把局部变量和一些只对系统变量有意义的选项合并起来。

1.3             SELECT ... INTO语句

 

SELECT col_name[,...] INTO var_name[,...] table_expr

这个SELECT语法把选定的列直接存储到变量。

因此,只有单一的行可以被取回。

SELECT id,data INTO x,y FROM test.t1 LIMIT 1;

注意,用户变量名在MySQL 5.1中是对大小写不敏感的。

重要: SQL变量名不能和列名一样。如果SELECT ... INTO这样的SQL语句包含一个对列的参考,并包含一个与列相同名字的局部变量,MySQL当前把参考解释为一个变量的名字。

 

1.10     MySQL 存储过程参数类型(in、out、inout)

 

MySQL 存储过程参数(in)

 

MySQL 存储过程 “in” 参数:跟 C 语言的函数参数的值传递类似, MySQL 存储过程内部可能会修改此参数,但对 in 类型参数的修改,对调用者(caller)来说是不可见的(not visible)。

 

MySQL 存储过程参数(out)

 

MySQL 存储过程 “out” 参数:从存储过程内部传值给调用者。在存储过程内部,该参数初始值为 null,无论调用者是否给存储过程参数设置值

 

MySQL 存储过程参数(inout)

 

MySQL 存储过程 inout 参数跟 out 类似,都可以从存储过程内部传值给调用者。不同的是:调用者还可以通过 inout 参数传递值给存储过程。

 

总结

 

如果仅仅想把数据传给 MySQL 存储过程,那就使用“in” 类型参数;如果仅仅从 MySQL 存储过程返回值,那就使用“out” 类型参数;如果需要把数据传给 MySQL 存储过程,还要经过一些计算后再传回给我们,此时,要使用“inout” 类型参数。

 

1.11     例子:

1.1            创建存储过程

 

带(输出参数)返回值的存储过程:

 

--删除存储过程

 

DROP PROCEDURE IF EXISTS proc_employee_getCount

 

--创建存储过程

 

CREATE PROCEDURE proc_employee_getCount(out n int)

 

BEGIN

 

     SELECT COUNT(*) FROM employee ;

 

END

 

--MYSQL调用存储过程

 

CALL proc_employee_getCount(@n);

 

带输入参数的存储过程:

 

--删除存储过程

 

DROP PROCEDURE IF EXISTS proc_employee_findById;

 

--创建存储过程

 

CREATE PROCEDURE proc_employee_findById(in n int)

 

BEGIN

 

     SELECT * FROM employee where id=n;

 

END

 

--定义变量

 

SET @n=1;

 

--调用存储过程

 

CALL proc_employee_findById(@n);

 

操作存储过程时应注意:

 

  1.          删除存储过程时只需要指定存储过程名即可,不带括号;

 

  1.          创建存储过程时,不管该存储过程有无参数,都需要带括号;

 

  1.          在使用SET定义变量时应遵循SET的语法规则;

 

SET @变量名=初始值;

 

  1.          在定义存储过程参数列表时,应注意参数名与数据库中字段名区别开来,否则将出现无法预期的结果

 

1.12     Java代码调用存储过程(JDBC)

相关API:java.sql.CallableStatement

 

使用到java.sql.CallableStatement接口,该接口专门用来调用存储过程;

 

该对象的获得依赖于java.sql.Connection;

 

通过Connection实例的prepareCall()方法返回CallableStatement对象

 

prepareCall()内部为一固定写法{call 存储过程名(参数列表1,参数列表2)}可用?占位

 

eg: connection.prepareCall("{call proc_employee(?)}");

 

存储过程中参数处理:

 

输入参数:通过java.sql.CallableStatement实例的setXXX()方法赋值,用法等同于java.sql.PreparedStatement

 

输出参数:通过java.sql.CallableStatement实例的registerOutParameter(参数位置, 参数类型)方法赋值,其中参数类型主要使用java.sql.Types中定义的类型

 

Java代码调用带输入参数的存储过程 (根据输入ID查询雇员信息)

 

publicvoid executeProcedure()

    {

        try {

            /**

             *callableStatementjava.sql.CallableStatement

             *connectionjava.sql.Connection

             *jdbc调用存储过程原型

             *{call存储过程名(参数列表1,参数列表2)}可用?代替

             */

            callableStatement=connection.prepareCall("{call proc_employee_findById(?)}");

            callableStatement.setInt(1, 1); //设置输入参数

            resultSet=callableStatement.executeQuery();//执行存储过程

            if(resultSet.next())

            {

                System.out.println(resultSet.getInt(1)+""t"+resultSet.getString(2));

            }

        } catch (SQLException e) {

            e.printStackTrace();

        }

    }  

 

 

Java代码调用带输出参数的存储过程 (返回数据库中的记录数)

 

publicvoid executeProcedure()

    {

        try {

            /**

             *callableStatementjava.sql.CallableStatement

             *connectionjava.sql.Connection

             *jdbc调用存储过程原型

             *{call存储过程名(参数列表1,参数列表2)}可用?代替

             */

            callableStatement=connection.prepareCall("{call proc_employee_getCount(?)}");

            //设置输出参数

            callableStatement.registerOutParameter(1, Types.INTEGER);

            //执行存储过程

            resultSet=callableStatement.executeQuery();

            if(resultSet.next())

            {

                System.out.println(resultSet.getInt(1));

            }

        } catch (SQLException e) {

            e.printStackTrace();

        }

    }

 

之前在工作中总是听别人提到存储过程,觉得是个很高深的东西,利用工作之余,看了下相关的知识,现将学习...

mysql存储过程详细讲解及完整实例下载,mysql存储过程实例

一、存储过程概念
  1.存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集。经编译后存储在数据库 中。
  2.存储过程是数据库中的一个重要对象,用户通过指定存储过程的名字并给出参数(如果该存储过 程带有参数)来执行它。
  3.存储过程是由流控制和SQL语句书写的过程,这个过程经编译和优化后存储在数据库服务器中。
  4.存储过程可由应用程序通过一个调用来执行,而且允许用户声明变量。
  5.同时,存储过程可以接收和输出参数、返回执行存储过程的状态值,也可以嵌套调用。
二、存储过程优点
  1.增强了SQL语句的功能和灵活性
  2不需要反复建立一系列处理步骤,保证了数据的完整性
  3.降低了网络的通信量,客户端调用存储过程只需要传存储过程名和相关参数即可,与传输SQL语 句相比自然数据量少了很多
  4.增强了使用的安全性,通过存储过程可以使没有权限的用户在控制之下间接地存取数据库,从而 保证数据的安全。
  5.可以实现集中控制,当规则发生改变时,只需要修改存储过程就可以。。、
三、存储过程缺点
  1.调试不是很方便。
  2.可能没有创建存储过程的权利。
  3.重新编译问题。
  4.移植性问题。

四、变量

  1.用户变量:以”@”开始,形式为”@变量名。” 用户变量跟MySQL客户端是绑定的,设置的变量,只对当前用户使用的客户端生效.
  2.全局变量:定义时,以如下两种形式出现,set GLOBAL 变量名 或者 set @@global.变量名。show global variables; 对所有客户端生效。只有super权限才可以设置全局变量。
  3.会话变量:只对连接的客户端有效。一旦客户端失去连接,变量失效。show session variables;
  4.局部变量:作用范围在begin到end语句块之间。

    4.1在该语句块里设置的变量declare语句专门用于定义局部变量。declare numeric number(8,2)【MySQL的数据类型,如:int,float, date, varchar(length)】 default 9.95;

    4.2变量赋值:SET 变量名 = 表达式值 [,variable_name= expression ...],set numeric=1.2或者SELECT 2.3 into @x;

五、mysql 存储程序

  1.基本语法:create procedure  过程名 ([过程参数[,...]])[特性 ...] 过程体;先看基本例子

  第一种:

delimiter ;;
create procedure proc_on_insert()
begin
end
;;
delimiter

  第二种:

delimiter //
create procedure proc_on_insert()
begin
end
//
delimiter ;;

  注意:

  1).这里需要注意的是delimiter // 和delimiter ;;两句,delimiter是分割符的意思,因为MySQL默认以";"为分隔符,如果我们没有声明分割符,那么编译器会把存储过程当成SQL语句进行处理,则存储过程的编译过程会报错,所以要事先用delimiter关键字申明当前段分隔符,这样MySQL才会将";"当做存储过程中的代码。
  2).存储过程根据需要可能会有输入、输出、输入输出参数,这里有一个输出参数s,类型是int型,如果有多个参数用","分割开。
  3).过程体的开始与结束使用begin与emd进行标识。

  2..调用存储过程基本语法:call sp_name()

  3.参数:MySQL存储过程的参数用在存储过程的定义,共有三种参数类型,IN,OUT,INOUT,形式如:

    create procedure([[in |out |inout ] 参数名 数据类形...])
    in输入参数:表示该参数的值必须在调用存储过程时指定,在存储过程中修改该参数的值不能被返回,为默认值
    out 输出参数:该值可在存储过程内部被改变,并可返回
    inout 输入输出参数:调用时指定,并且可被改变和返回

    3.1in参数例子:

drop procedure if exists prc_on_in;
delimiter ;;
create procedure prc_on_in(in num int)
begin
declare number int ;
set number=num;
select number;
end
;;
delimiter ;;
set @num=1;
call prc_on_in(@num);

  3.2out参数创建例子

drop procedure if exists prc_on_out;
delimiter ;;
create procedure prc_on_out(out out_num int)
begin
select out_num;
set out_num=78;
select out_num;
end
;;
delimiter ;;
set @number=6;
call prc_on_out(@number);

  3.3inout参数创建例子

drop procedure if exists prc_on_inout;
delimiter ;;
create procedure prc_on_inout(inout p_inout int)
begin
select p_inout;
set p_inout=100;
select p_inout;
end
;;
delimiter ;;
set @p_out=90;
call prc_on_inout(@p_out);

  3.4存储过程中的IF语句(if then elseif then else end if)

drop procedure if exists p_else;
create procedure p_else(in id int)
begin
    if (id > 0) then
        select '> 0' as id;
    elseif (id = 0) then
        select '= 0' as id;
    else
        select '< 0' as id;
    end if;
end;
set @p=-10;
call p_else(@p);

  3.5存储过程中的case when then

drop procedure if exists p_case;
delimiter ;;
create procedure p_case(  
    id int  
)  
begin  
    case id  
    when 1 then     
    select 'one' as trans;  
    when 2 then  
    select 'two' as trans;  
    when 3 then   
    select 'three' as trans;  
    else  
    select 'no trans' as trans;  
    end case;  
end;  
;;
delimiter ;;
set @id=1;
call p_case(@id);

  3.6存储过程中的while do … end while语句

drop procedure if exists p_while_do;  
create procedure p_while_do()  
begin  
    declare i int;  
        set i = 1;  
        while i <= 10 do  
            select concat('index : ', i) ;  
            set i = i + 1;  
        end while;  
end;  
call p_while_do(); 

  3.7存储过程中的repeat … until end repeat语句

drop procedure if exists p_repeat;
delimiter ;;
create procedure p_repeat(in parameter int)
BEGIN
     declare var int;  
     set var = parameter; 
     REPEAT
     set var = var - 1; 
     set parameter = parameter -2; 
     UNTIL var<0
     end REPEAT;
     select parameter;
END
;;
delimiter ;; 
set @parameter=1;
call p_repeat(@parameter);

  这个REPEAT循环的功能和前面WHILE循环一样,区别在于它的执行后检查是否满足循环条件(until i>=5),而WHILE则是执行前检查(while i<5 do)。
  不过要注意until i>=5后面不要加分号,如果加分号,就是提示语法错误。

3.8存储过程中的loop ··· end loop语句

    

drop procedure if exists p_loop;
delimiter;;
create procedure p_loop(in parameter int)
BEGIN
     declare var int;  
     set var = parameter; 
     LOOP_LABLE:loop
     set var = var - 1; 
     set parameter = parameter -2; 
     if var<0 THEN
   LEAVE LOOP_LABLE;
     END IF;
     end LOOP;
     select parameter;
END
;;
delimiter;;
set @parameter=4;
call p_loop(@parameter);

    使用LOOP编写同样的循环控制语句要比使用while和repeat编写的要复杂一些:在循环内部加入了IF……END IF语句,在IF语句中又加入了LEAVE语句,LEAVE语句的意思是离开循环,LEAVE的格式是:LEAVE 循环标号。

  4.游标的使用 :定义游标 ,打开游标 ,使用游标 ,关闭游标例子

drop table if exists  person;
CREATE TABLE `person` (
  `id` int(11) NOT NULL DEFAULT '0',
  `age` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
insert into person(age) value(1);
drop procedure if exists prc_test1;
delimiter ;;
create definer = root@localhost procedure prc_test1()
BEGIN
    declare var int;   
     /**跳出循环标识**/
   declare done INT DEFAULT FALSE;
     /**声明游标**/
   declare cur cursor for select age from person;
   /**循环结束设置跳出标识**/
   declare continue handler for not FOUND set done = true;
   /**打开游标**/
   open cur;
     LOOP_LABLE:loop
        FETCH cur INTO var;
        select var;
     if done THEN
   LEAVE LOOP_LABLE;
     END IF;
     end LOOP;
     /**关闭游标**/
   CLOSE cur;
END;
;;
delimiter ;;
call prc_test1();

5.MySQL存储过程的查询

5.1.查看某个数据库下面的存储过程

select name from mysql.proc where db=’数据库名’;
或者
select routine_name frominformation_schema.routines where routine_schema='数据库名';
或者
show procedure status where db='数据库名';

5.2.查看存储过程的详细

show create procedure 数据库.存储过程名;

6、MySQL存储过程的修改

ALTER PROCEDURE:更改用CREATE PROCEDURE 建立的预先指定的存储过程,其不会影响相关存储过程或存储功能。

7.删除存储过程
drop procedure sp_name //注释函数名

mysql存储函数实例下载地址:        密码:282i

一、存储过程概念 1.存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句...

复制代码

二、存储过程的优点

五.其他常用命令
1.show procedure status
显示数据库中所有存储的存储过程基本信息,包括所属数据库,存储过程名称,创建时间等
2.show create procedure sp_name
显示某一个存储过程的详细信息

create procedure 存储过程名(参数列表)

$conn = mysql_connect('localhost','root','root') or die ("数据连接错误!!!");
mysql_select_db('test',$conn);
$sql = "
create procedure myproce()
begin
INSERT INTO user (id, username, sex) VALUES (NULL, 's', '0');
end;
";
mysql_query($sql);//创建一个myproce的存储过程

3.2存储过程的查看和删除

 代码如下

存储过程调用

一.创建存储过程
1.基本语法:
create procedure sp_name()
begin
.........
end

图片 1

 代码如下

begin

调用myproce的存储过程,则数据库中将增加一条新记录。

2、如果存储过程体仅仅只有一句话,begin end可以省略
存储过程体中的每条sql语句的结尾要求必须加分号。
存储过程的结尾可以使用 delimiter 重新设置
语法:
delimiter 结束标记
案例:
delimiter $

SET var_name = expr [, var_name = expr]
在存储程序中的SET语句是一般SET语句的扩展版本。
被参考变量可能是子程序内声明的变量,或者是全局服务器变量。
在存储程序中的SET语句作为预先存在的SET语法的一部分来实现。这允许SET a=x, b=y, ...这样的扩展语法。
其中不同的变量类型(局域声明变量及全局和集体变量)可以被混合起来。
这也允许把局部变量和一些只对系统变量有意义的选项合并起来。  

存储过程

实例四:传出参数的inout存储过程

案例(带inout的模式参数):传入a和b两个值,最终a和b都翻倍并返回
图片 2

statements

一、存储过程的定义:

重要: SQL变量名不能和列名一样。如果SELECT ... INTO这样的SQL语句包含一个对列的参考,并包含一个与列相同名字的局部变量,MySQL当前把参考解释为一个变量的名字。

3.1 存储过程的创建和调用

1.基本语法:

①提高了代码的重用性

$sql = "
create procedure myproce4(inout sexflag int)
begin
SELECT * FROM user WHERE sex = sexflag;
end;
";
mysql_query($sql);//创建一个myproce4的存储过程
$sql = "set @sexflag = 1";
mysql_query($sql);//设置性别参数为1
$sql = "call test.myproce4(@sexflag);";
mysql_query($sql);//

3.2存储过程的查看和删除

存储子程序可以使用BEGIN ... END复合语句来包含多个语句。

  存储过程体(正确的SQL语句)

statements

查看存储过程的信息
DESC myp2; 错误方式
SHOW CREATE PROCEDURE chen02;正确方式

复制代码

删除存储过程
语法:drop procedure 存储过程名
DROP PROCEDURE chen00;正确方式
DROP PROCEDURE chen00,chen02;错误方式
图片 3

调用myproce4的存储过程,在cmd下面看效果

三、存储过程的使用

$sql = "
create procedure myproce2(in score int)
begin
if score >= 60 then
select 'pass';
else
select 'no';
end if;
end;
";
mysql_query($sql);//创建一个myproce2的存储过程
$sql = "call test.myproce2(70);";
mysql_query($sql);//

图片 4
图片 5

(1).while循环
[label:] WHILE expression DO

参数模式:
in:该参数可以作为输入,也就是该参数需要调用方传入值
out:该参数可以作为输出,也就是该参数可以作为返回值
inout:该参数既可以作为输入又可以作为输出,也就是该参数既需要传入值,又可以返回值

(3).repeat until循环
[label:] REPEAT

案例(带out的模式参数):判断用户是否是会员
图片 6
图片 7

这个语句被用来移除一个存储程序。不能在一个存储过程中删除另一个存储过程,只能调用另一个存储过程

④提高了效率,极少了编译次数和数据库服务器的连接次数

调用myproce2的存储过程,看不到效果,可以在cmd下看到结果。

二、优点

实例三:传出参数的存储过程

案例(带in的模式参数):根据beauty名,查询boys的名字
图片 8
图片 9
图片 10

 

存储过程是一组为了完成特定功能的SQL语句集,存储在数据中,经过一次编译后再次调用不需要二次编译,可以理解为批处理语句。

1.区块定义,常用
begin
......
end;
也可以给区块起别名,如:
lable:begin
...........
end lable;
可以用leave lable;跳出区块,执行区块以后的代码
2.条件语句
if 条件 then
statement
else
statement
end if;

三、存储过程的使用

END REPEAT [label] ;

案例(空参列表):插入3条数据到user表中

SELECT col_name[,...] INTO var_name[,...] table_expr
这个SELECT语法把选定的列直接存储到变量。
因此,只有单一的行可以被取回。
SELECT id,data INTO x,y FROM test.t1 LIMIT 1;
注意,用户变量名在MySQL 5.1中是对大小写不敏感的。  

②简化操作

END WHILE [label] ;

3.1创建和调用

二.调用存储过程

③提高了数据的安全性

DROP PROCEDURE  IF  EXISTS存储过程名

end

一.创建存储...

一、存储过程的定义

实例二:传入参数的存储过程

注:
1、参数列表包含三部分
参数模式 参数名 参数类型
举例:
in stuname varchar(20)

CALL语句调用一个先前用CREATE PROCEDURE创建的程序。
CALL语句可以用声明为OUT或的INOUT参数的参数给它的调用者传回值。
存储过程名称后面必须加括号,哪怕该存储过程没有参数传递

创建语法:

3.循环语句

 

1.8         DECLARE语句(用来声明局部变量)
DECLARE语句被用来把不同项目局域到一个子程序:局部变量

实例一:无参的存储过程

statements

1.2             变量SET语句

复制代码

PHP 调用 MySQL 存储过程 .

注意:存储过程名称后面必须加括号,哪怕该存储过程没有参数传递

2.注意事项
(1)不能在一个存储过程中删除另一个存储过程,只能调用另一个存储过程

END LOOP [label];

eg:DROP PROCEDURE IF EXISTS proc_employee (proc_employee 存储过程名)

DECLARE var_name[,...] type [DEFAULT value]
这个语句被用来声明局部变量。
要给变量提供一个默认值,请包含一个DEFAULT子句。
值可以被指定为一个表达式,不需要为一个常数。
如果没有DEFAULT子句,初始值为NULL。
局部变量的作用范围在它被声明的BEGIN ... END块内。
它可以被用在嵌套的块中,除了那些用相同名字声明变量的块。  

本文章来给大家介绍我在使用mysql存储过程中(创建,删除,调用)的一些学习笔记,有需要学习存储过程的同学可进入参考。

$sql = "call test.myproce();";
mysql_query($sql);//

1.9         存储程序中的变量
1.1             DECLARE局部变量

1.3             SELECT ... INTO语句

复制代码

2.参数传递

(2).loop循环
[label:] LOOP

四.区块,条件,循环

三.删除存储过程

DECLARE仅被用在BEGIN ... END复合语句里,并且必须在复合语句的开头,在任何其它语句之前。

1.基本语法:call sp_name()

 CALL语句(存储过程的调用)
CALL 存储过程名(参数列表)  

statement_list 代表一个或多个语句的列表。statement_list之内每个语句都必须用分号(;)来结尾。

复合语句可以被标记。除非begin_label存在,否则end_label不能被给出,并且如果二者都存在,他们必须是同样的。

 代码如下

 代码如下

$sql = "
create procedure myproce3(out score int)
begin
set score=100;
end;
";
mysql_query($sql);//创建一个myproce3的存储过程
$sql = "call test.myproce3(@score);";
mysql_query($sql);//调用myproce3的存储过程
$result = mysql_query('select @score;');
$array = mysql_fetch_array($result);
echo '<pre>';print_r($array);

UNTIL expression

本文由金沙棋牌发布于金沙棋牌app手机下载,转载请注明出处:存储过程,mysql5存储过程入门创建

关键词:

上一篇:内附脚本,使用SQLServer同义词和SQL邮件

下一篇:没有了