c mysql 创建存储过程_[转]MYSQL 创建存储过程

MySQL 存储过程是从 MySQL 5.0 开始增加的新功能。存储过程的优点有一箩筐。不过最主要的还是执行效率和SQL 代码封装。特别是 SQL 代码封装功能,如果没有存储过程,在外部程序访问数据库时(例如 PHP),要组织很多 SQL 语句。特别是业务逻辑复杂的时候,一大堆的 SQL 和条件夹杂在 PHP 代码中,让人不寒而栗。现在有了 MySQL 存储过程,业务逻辑可以封装存储过程中,这样不仅容易维护,而且执行效率也高。

一、MySQL 创建存储过程

“pr_add” 是个简单的 mysql 存储过程,这个存储过程有两个 int 类型的输入参数 “a”、“b”,返回这两个参数的和。

drop procedure if exists pr_add;

-- 计算两个数之和

create procedure pr_add

(

a int,

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;

/*

return c;- 不能在 MySQL 存储过程中使用。return 只能出现在函数中。

/

end;

二、调用 MySQL 存储过程

call pr_add(10, 20);

执行 MySQL 存储过程,存储过程参数为 MySQL 用户变量。

set @a = 10;

set @b = 20;

call pr_add(@a, @b);

三、MySQL 存储过程特点

创建 MySQL 存储过程的简单语法为:

create procedure 存储过程名字()

(

[in|out|inout] 参数 datatype

)

begin

MySQL 语句;

end;

MySQL 存储过程参数如果不显式指定“in”、“out”、“inout”,则默认为“in”。习惯上,对于是“in” 的参数,我们都不会显式指定。

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

2. MySQL 存储过程参数,不能在参数名称前加“@”,如:mailto:%E2%80%9C@a int”。下面的创建存储过程语法在 MySQL 中是错误的(在 SQL Server 中是正确的)。 MySQL 存储过程中的变量,不需要在变量名字前加“@”,虽然 MySQL 客户端用户变量要加个“@”。

create procedure pr_add

(

@a int,- 错误

b int   - 正确

)

3. MySQL 存储过程的参数不能指定默认值。

4. MySQL 存储过程不需要在 procedure body 前面加 “as”。而 SQL Server 存储过程必须加 “as” 关键字。

create procedure pr_add

(

a int,

b int

)

as             - 错误,MySQL 不需要 “as”

begin

mysql statement ...;

end;

5. 如果 MySQL 存储过程中包含多条 MySQL 语句,则需要 begin end 关键字。

create procedure pr_add

(

a int,

b int

)

begin

mysql statement 1 ...;

mysql statement 2 ...;

end;

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

...

declare c int;

if a is null then

set a = 0;

end if;

...

end;

7. MySQL 存储过程中的注释。

/*

这是个

多行 MySQL 注释。

/

declare c int;    - 这是单行 MySQL 注释 (注意- 后至少要有一个空格)

if a is null then 这也是个单行 MySQL 注释

set a = 0;

end if;

...

end;

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

set c = a + b;

select c as sum;

/*

return c;- 不能在 MySQL 存储过程中使用。return 只能出现在函数中。

/

end;

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

call pr_no_param();

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

call pr_add(10, null);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/421579.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

14个支持响应式设计的流行前端开发框架

在几年前,并没有真正意义上的前端开发。随着网络技术的发展,网站和 Web 应用程序变得越来越复杂,前端部分的工作独立出来逐渐成为现在的前端开发。如今,我们可以看到越来越多的公司在招聘前端开发岗位。 前端开发并不容易&#xf…

marquee 移动属性

该标签不是HTML3.2的一部分&#xff0c;并且只支持MSIE3以后内核&#xff0c;所以如果你使用非IE内核浏览器(如&#xff1a;Netscape)可能无法看到下面一些很有意思的效果该标签是个容器标签语法&#xff1a;<marquee></marquee>以下是一个最简单的例子&#xff1a…

重写方法返回值可以不一样吗_MAX和MIN函数你会用吗?不一样的应用方法

​一看到标题&#xff0c;大家可能会想&#xff0c;MAX和MIN函数谁不会&#xff0c;不就是求最大和最小嘛&#xff0c;今天就给大家介绍点MAX和MIN函数不一样的内容。首先还是先看下它的定义&#xff1a;MAX&#xff1a;返回一组值中的最大值MIN&#xff1a;返回一组值中的最小…

(转载)最黑的黑客米特尼克:多次耍FBI 终被高手擒

&#xff08;转载&#xff09;http://bbs.chinabyte.com/thread-816847-1-1.html凯文米特尼克 50岁 第一个被FBI通缉的黑客,被称为“头号电脑骇客”&#xff0c;曾入侵北美防空指挥系统&#xff0c;现职业是网络安全咨询师。 阿德里安拉莫 入侵《纽约时报》、微软&#xff0c;被…

mysql数据库重启命令_MySQL数据库之windows下重启mysql的方法

本文主要向大家介绍了MySQL数据库之windows下重启mysql的方法 &#xff0c;通过具体的内容向大家展现&#xff0c;希望对大家学习MySQL数据库有所帮助。其中第二种方法对我这无效&#xff0c;以后再搞清楚&#xff01;一、MYSQL服务我的电脑——(右键)管理——服务与应用程序—…

例子:Basic Lens sample

本例演示了如何自己扩展一个Camera Lens。 1. UI界面是一个MediaViewer <controls:MediaViewerx:Name"MediaViewer"Items"{Binding CameraRoll}" FooterVisibility"Visible"FooterDisplayed"MediaViewer_FooterDisplayed"ItemDispl…

mysql中的生日应该是什么类型_MySQL中的数据类型和schema优化

最近在学习MySQL优化方面的知识。本文就数据类型和schema方面的优化进行介绍。1. 选择优化的数据类型MySQL支持的数据类型有很多&#xff0c;而如何选择出正确的数据类型&#xff0c;对于性能是至关重要的。以下几个原则能够帮助确定数据类型&#xff1a;更小的通常更好应尽可能…

不是每个人都可以坚持!

三个月的暑假&#xff0c;准确来说休息了1个月。 从7月25日开始&#xff0c;就开始了人生第一份工作&#xff0c;或者说是实习。单位是上海XXX&#xff0c;一家国企。 刚进单位的时候&#xff0c;老大给我的任务&#xff0c;是很简单的三个字做报表。本来以为很简单&#xff0c…

vsftpd pam_mysql crypt 1_安装vsftpd+pam+mysql实现对虚拟用户身份认证详细步骤

安装vsftpdpammysql实现对虚拟用户身份认证详细步骤发布时间&#xff1a;2020-05-13 11:42:57来源&#xff1a;亿速云阅读&#xff1a;188作者&#xff1a;三月栏目&#xff1a;数据库下文主要给大家带来安装vsftpdpammysql实现对虚拟用户身份认证详细步骤&#xff0c;希望这些…

ios 在UIView上画图,线条

1.画线条&#xff08;实线&#xff0c;虚线&#xff09; - (void)drawRect:(CGRect)rect { CGContextRef context UIGraphicsGetCurrentContext(); [self drawXLine:context rect:rect]; [self drawLegend:context rect:rect]; } -(CGContextRef)drawXLine:(CGContextRef)cont…

校园卡系统mysql与java结合_基于Java+JSP+Mysq+Servletl的校园卡一卡通管理系统

需求分析使用JavaJSPMysqServlet技术实现一个校园卡一卡通管理系统, 分为学生与管理员两个角色, 能够进行登录, 充值, 挂失, 历史消费查询等功能本站提供其他类型的 一卡通管理系统源代码 点击查看运行环境java, jdk1.8,tomcat8.5,mysql5.6, EclispseEE/Idea项目技术java, JSP,…

linux/unix下setuid/seteuid/setreuid/setresuid

其中setresuid()具有最清晰的语法&#xff1a; setresuid()被执行的条件有&#xff1a; ①当前进程的euid是root ②三个参数&#xff0c;每一个等于原来某个id中的一个 如果满足以上条件的任意一个&#xff0c;setresuid()都可以正常调用&#xff0c;并执行&#xff0c;将 进程…

shell监控mysql发邮件_用shell脚本监控linux系统 自动发送邮件

此脚本可以做一个定时的检测&#xff0c;超出设定的值&#xff0c;即往邮箱发送警告脚本用到bc&#xff0c;sendmail&#xff0c;163邮箱&#xff0c;yum install bc#!/bin/bash#System Monitoring Scriptwhile [ 1 ]do#本机需开启postfix或sendmail服务。#报警邮件地址设置MAI…

【C语言】01-C语言概述

说明&#xff1a;这个C语言专题&#xff0c;是学习iOS开发的前奏。也为了让有面向对象语言开发经验的程序员&#xff0c;能够快速上手C语言。如果你还没有编程经验&#xff0c;或者对C语言、iOS开发不感兴趣&#xff0c;请忽略 回到顶部为什么iOS开发要先学C语言&#xff1f; i…

删除 索引 外键 mysql_MySQL外键及级联删除 表的存储引擎与创建索引 删除数据库和表...

Messages表&#xff1a;mysql>create table Messages(->message_id int auto_increment primary key,->user_name varchar(50) not null,->author_id int not null,->body text,->forum_id int not null);Forums表&#xff1a;mysql>create table Forums(…

字符串长度(PHP学习)

1.计算字符串长度有哪些方法&#xff1f; 答&#xff1a;strlen() 和 mb_strlen() 2.两者有什么区别 答&#xff1a; 如下代码 <?php $str hello中国; ?>strlen($str)计算的是字节的长度&#xff0c;在utf8下一个汉字代表3个字符&#xff0c;算出来是11 在GB2312和…

eclipse在ubuntu13.04下崩溃crash

错误信息&#xff1a; # # A fatal error has been detected by the Java Runtime Environment: # # SIGSEGV (0xb) at pc0x00007fb29dce2009, pid19297, tid140405947455232 # # JRE version: 7.0_10-b18 # Java VM: Java HotSpot(TM) 64-Bit Server VM (23.6-b04 mixed mode…

Java IO 体系结构

参考文章地址: http://blog.csdn.net/oracle_microsoft/article/details/2634231 Java IO体系结构看似庞大复杂,其实有规律可循,要弄清楚其结构,需要明白两点: 1. 其对称性质:InputStream 与 OutputStream, Reader 与 Writer,他们分别是一套字节输入-输出,字符输入-输出体系 2.…

java wap_JAVA和WAP移动学习技术

JAVA和WAP移动学习技术JAVA/WAP移动学习技术摘 要 移动学习是今后课堂学习的必要补充&#xff0c;WAP技术是基于连接浏览的移动学习关键技术。本文以移动电话学生成绩查询系统为例&#xff0c;利用UML模型表征实现的过程&#xff0c;分析其运用的WML 、SERVLET与连接池等技术。…