1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > mysql创建存储过程意义_浅谈一下mySql中创建存储过程

mysql创建存储过程意义_浅谈一下mySql中创建存储过程

时间:2019-04-25 07:26:48

相关推荐

mysql创建存储过程意义_浅谈一下mySql中创建存储过程

首先说一下为什么要使用存储过程,存储过程是在数据库中预编译的程序代码,其执行效率显然要比从程序端传过去的sql语句要高的多,这样既可以节省网络带宽,又可以加快sql的执行速度,可以很好的提高系统的性能。缺点是扩展性差,一个存储过程只能实现一个特定的功能,对于千变万化的curd操作来说,每种操作写一个存储过程实在是非常的繁琐,工作量大大加大。所以存储过程最好是应用在复杂且频繁并固定的操作上。

下面是我写的一个比较复杂的存储过程(mySql下的),以此为例浅谈一下我学到的东西。

DELIMITER //

create procedure findByCity(in basic_City_id char(36), in pageIndex int, in pageLength int)

begin

declare beginNum int default 0;

if pageLength > 0 then

set beginNum = (pageIndex - 1) * pageLength;

select basic_School.*

from basic_School, basic_County, basic_City

where basic_School.fk_County_Id = basic_County.id

and basic_County.fk_City_Id = basic_City.id

and basic_City.id = basic_City_id

order by basic_School.name asc

limit beginNum, pageLength;

else

select basic_School.*

from basic_School, basic_County, basic_City

where basic_School.fk_County_Id = basic_County.id

and basic_County.fk_City_Id = basic_City.id

and basic_City.id = basic_City_id

order by basic_School.name asc;

end if;

end

//

DELIMITER ;

1.首先理解一下这个 DELIMITER //,这叫声明分隔符,对于mySql中写存储过程必须要用这个进行包裹,否则就会报错。

2.在存储过程的括号里可以添加入参和出参,入参前面加in,出参前面加out,如果返回的是一条数据就不要使用出参了,存储过程会自动返回一条数据。

3.存储过程中可以声明变量如declare beginNum int default 0;但是变量要先声明后赋值如set beginNum = (pageIndex - 1) * pageLength;

4.可以添加排序和分页order by basic_School.name asc limit beginNum, pageLength;

5.可以使用控制语句如if ... then...else if ...then...else...end if;

6.存储过程中的操作符

算术运算符

+ 加 SET var1=2+2; 4

- 减 SET var2=3-2; 1

*乘 SET var3=3*2; 6

/ 除 SET var4=10/3; 3.3333

DIV 整除SET var5=10 DIV 3; 3

% 取模SET var6=10%3 ; 1

比较运算符

> 大于1>2False

<= 小于等于2<=2True

>= 大于等于3>=2True

BETWEEN 在两值之间5 BETWEEN 1 AND 10True

NOT BETWEEN 不在两值之间5 NOT BETWEEN 1 AND 10False

IN 在集合中5 IN (1,2,3,4)False

NOT IN 不在集合中5 NOT IN (1,2,3,4)True

=等于2=3False

<>, != 不等于2<>3False

<=> 严格比较两个NULL值是否相等NULL<=>NULLTrue

LIKE简单模式匹配"Guy Harrison" LIKE "Guy%"True

REGEXP 正则式匹配"Guy Harrison" REGEXP "[Gg]reg"False

IS NULL 为空0 IS NULLFalse

IS NOT NULL 不为空0 IS NOT NULLTrue

逻辑运算符

与(AND)

XOR

TRUE

FALSE

NULL

TRUE

FALSE

TRUE

NULL

FALSE

TRUE

FALSE

NULL

NULL

NULL

NULL

NULL

位运算符

| 位或

& 位与

<

>> 右移位

~ 位非(单目运算,按位取反)

这里只是浅谈一下,具体的问题还要自己根据具体的情况去上网查资料处理,能力有限,望多包涵。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。