Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 1097|回复: 0

mysql存储过程

[复制链接]

该用户从未签到

发表于 2011-9-27 12:58:12 | 显示全部楼层 |阅读模式
mysql存储过程的优点,存储过程是先编译然后保存在数据库,存储过程就是一些sql的集合,mysq 5以后才有存储过程这个用法,因为它的出现可以简化程序的开发,减少数据库服务器与应用程序服务器之间的传输,从而提高了服务器的数据处理能力并且节约了开发成本。

存储过程的参数可以使用 INOUT,OUT,IN等类型,

在对存储过程的操作时,要先确认操作用户有相对应的权限,例如,创建存储过程权限,删除权限,CREATE ROUTINE权限,ALTER ROUTING权限与EXECUTER执行权限等。

创建存储过程

create procedure 存储名字()



    [in|out|inout]  参数 datatype



begin

    mysql语句;

end;



1. mysql 存储过程名字后面的“( )”是必须的,即使没有一个参数,也需要“( )”

2. mysql 存储过程参数,不能在参数名称前加“@”,如:“@a int”。下面的创建存储过程语法在 mysql 中是错误的(在 sql server 中是正确的)。
3. mysql 存储过程的参数不能指定默认值。

4. mysql 存储过程不需要在 procedure body 前面加 “as”。而 sql server 存储过程必须加 “as” 关键字
5. 如果 mysql 存储过程中包含多条 mysql 语句,则需要 begin end 关键字。

6. mysql 存储过程中的每条语句的末尾,都要加上分号 “;”

7. 不能在 mysql 存储过程中使用 “return” 关键字。

8. 调用 mysql 存储过程时候,需要在过程名字后面加“( )”,即使没有一个参数,也需要“( )”

call pr_no_param( );

9. 因为 mysql 存储过程参数没有默认值,所以在调用 mysql 存储过程时候,不能省略参数。可以用 null 来替代。

10.在创建存储过程时,应先用delimiter $$ 指定分隔符类型为$$,当然也可以指定其他分隔符类型。但不能为;,因为mysql默认分隔符类型为;。



alter {procedure | function} sp_name []

    alter 语法是用来改变一个过程或函数的特征,当你想改变存储过程或者函数的结构时可以使
用它。当然你也可以先 drop 它再 create。

    drop {procedure | function} [if exists] sp_name

    drop 语法即用来删除一个存储程序或者函数,当你创建的一个存储过程或者函数的名字已经存
在时,你想把以前的给覆盖掉,那么此时你就可以使用 drop ,然后在创建。

    show create {procedure | function } sp_name

    show 语法用来显示创建的存储过程或者函数的信息。

简单实例

求和

mysql>drop procedure if exists pr_add();

mysql>delimiter $$

mysql>create procedure pr_add( in a int, in b int)

        ->begin

        -> declare c int;

        -> if a is null then

        -> set a=0;

        -> end if;

        -> if b is null then

        ->set b=0;

        -> end if;

        -> set c=a+b;

        -> select c as sum;

        ->end;

        ->$$

mysql>delimiter ;

mysql> call pr_all(10,20);  #存储过程的调用
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

GMT+8, 2024-5-1 13:14 , Processed in 0.434443 second(s), 47 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表