js调用mysql存储过程_mysql存储过程的使用案例_太平洋学习网|一个最全的javaweb,js,css,html5,csdn,android,linux的学习网站。...

mysql存储过程优点是执行效率非常快!因为存储过程是在数据库的服务器端执行的,缺点是移植性很差!不同数据库的存储过程是不能移植。为了便于理解,先看看student表的结构。

f14abd5f54af59cb43bcb211a89a8d39.png

1:查询student表所有数据的存储过程,mysql存储过程语句如下,后面格式都不再作解释:DELIMITER $  //申明存储过程,$代表开始符号,另外一个$代表结束符号

CREATE PROCEDURE pro_test() //存储过程名称

BEGIN

select *from student;

END $

//调用存储过程方式

CALL pro_test();

运行结果和上图一样。

2:输入参的存储过程,虽然只有输入参数,但是还是会有结果的,mysql语句,IN代表关键字。DELIMITER $

CREATE PROCEDURE pro_input(IN sid int)

BEGIN

select *from student where id = sid;

END $

//调用方式

CALL pro_input(901);

输出结果为id=901的那一行数据,关键字为OUT。

3:输出参存储过程。DELIMITER $

CREATE PROCEDURE pro_out(OUT str varchar(20))

BEGIN

select name from student where id = 901;

set str = "";

END $

//调用方式

CALL pro_out(@str);

//获取输出参数str

select @str;

输出结果为:"张老大",虽然有赋值set str="",但是第二句如果不是单独使用则赋值无效,结果以select xxx为准。

4:输入输出参存储过程,关键字为INOUT。DELIMITER $

CREATE PROCEDURE pro_input_out(INOUT n int)

BEGIN

select n;

set n = 100;

END $

//输入的n值为10,

set @n = 10;

CALL pro_input_out(@n);

SELECT @n;

输出结果为:10,和上面一样,以select xxx的结果为准。

5:带有if条件判断的mysql存储过程,代码如下。DELIMITER $

CREATE PROCEDURE pro_testIf(IN num int,OUT str varchar(20))

BEGIN

IF num=1 THEN

SET str='星期一';

ELSEIF num=2 THEN

SET str='星期二';

ELSEIF num=3 THEN

SET str='星期三';

ELSE

SET str='输入错误';

END IF;

END $

//调用存储过程

CALL pro_testIf(4,@str);

//获取输出字符串

SELECT @str;

输出结果为:“输入错误”,跟我们所学的if结果是一样的。

6:带有while循环语句的存储过程,需求: 输入一个整数,求和。例如,输入100,统计1-100的和。DELIMITER $

CREATE PROCEDURE pro_testWhile(IN num int,OUT result int)

BEGIN

-- 定义一个局部变量

DECLARE i INT DEFAULT 1;

DECLARE vsum INT DEFAULT 0;

WHILE i<=num DO

SET vsum = vsum+i;

SET i=i+1;

END WHILE;

SET result=vsum;

END $

//调用while存储过程

CALL pro_testWhile(100,@result);

//输出1到100的和

SELECT @result;

7:将查询的结果赋值给变量,关键字为INTO,如下。DELIMITER $

CREATE PROCEDURE pro_findById(IN eid int,OUT vname varchar(20) )

BEGIN

SELECT name INTO vname FROM student WHERE id=eid;

END $

//调用存储过程,值会赋给vname

CALL pro_findById2(901,@vname );

//获取值

SELECT @vname;

输出结果为:"张老大",和第3个存储过程的结果是一样的。

8:删除存储过程,步骤都一样,如下。�DROP PROCEDURE pro_findById;� //pro_findById代表存储过程名称

来源网站:太平洋学习网,转载请注明出处:http://www.tpyyes.com/a/mysql_oracle/118.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值