- 浏览: 1522849 次
- 性别:
- 来自: 厦门
文章分类
- 全部博客 (516)
- Java (49)
- Java/Struts 2.0 (25)
- Java/Spring、Spring MVC (11)
- Java/Quartz (3)
- Java/Lucene (6)
- Java/Hibernate (19)
- Java/openJPA (7)
- Java/DWR (7)
- Java/Security、Spring Security/OAuth2 (6)
- Java/Threading (9)
- Java/XML (22)
- java/design pattern (4)
- Android (2)
- JavaScript (46)
- jquery (3)
- DB/MySQL (23)
- DB/Oracle (16)
- PHP (25)
- CSS (20)
- Linux (38)
- C/C++、DLL、Makefile、VC++ (31)
- 正则 (9)
- Eclipse (4)
- 安全、网络等概念 (25)
- 集群 (7)
- 网页 (5)
- 视频\音频 (1)
- HTML (6)
- 计算机数学/算法 (3)
- Virtualbox (1)
- LDAP (2)
- 数据挖掘 (6)
- 工具破解 (1)
- 其他 (13)
- Mail (1)
- 药材 (3)
- 游戏 (2)
- hadoop (13)
- 压力测试 (3)
- 设计模式 (3)
- java/Swing (2)
- 缓存/Memcache (0)
- 缓存/Redis (1)
- OSGI (2)
- OSGI/Gemini (0)
- 文档写作 (0)
- java/Servlet (3)
- MQ/RabbitMQ (2)
- MQ/RocketMQ (0)
- MQ/Kafka (1)
- maven (0)
- SYS/linux (1)
- cache/redis (1)
- DB/Mongodb (2)
- nginx (1)
- postman (1)
- 操作系统/ubuntu (1)
- golang (1)
- dubbo (1)
- 技术管理岗位 (0)
- mybatis-plus (0)
最新评论
-
pgx89112:
大神,请赐我一份这个示例的项目代码吧,万分感谢,1530259 ...
spring的rabbitmq配置 -
string2020:
不使用增强器 怎么弄?
OpenJPA的增强器 -
孟江波:
学习了,楼主,能否提供一份源代码啊,学习一下,十分感谢!!!4 ...
spring的rabbitmq配置 -
eachgray:
...
spring-data-redis配置事务 -
qljoeli:
学习了,楼主,能否提供一份源代码啊,学习一下,十分感谢!!!1 ...
spring的rabbitmq配置
drop procedure if exists test.get_title; delimiter $$ create procedure test.get_title(in id int) BEGIN select title,subtitle,pubname from titles,publishers where titleID=id and titles.pubID=publishers.pubID; end$$ call test.get_title(1); drop procedure if exists test.half; delimiter $$ create procedure test.half(in a int , out b DOUBLE) BEGIN set b = a/2; end $$ call test.half(15,@result); select @result;
2、变量
- 全局性的普通SQL变量。这类变量的名字前面都有一个“@”字符作为前缀。这些变量在SP里的用法与它们在普通SQL命令里的用法一样。它们的内容将一直保存到与MySQL服务器断开链接为止。
- SP内部使用的局部变量和参数。这些变量的名称前面没有“@”字符。必须在使用它们之前用declare命令对它们做出声明。局部变量的内容在过程或函数退出执行时即告丢失。局部变量只在对它们做出声明的那个begin-end语句块里有效。这意味着可以在同一个过程里声明多个同名的局部变量——只要它们不在同一个begin-end语句块里就行。
-
声明变量(declare)。变量的声明必须发生在begin-end语句块里,而且必须发生同一个begin-end语句块里的其他命令之前。
declare varname1,varname2,... datatype [default value];
示例代码:
drop procedure if exists test.test; create procedure test.test() BEGIN declare x int default 0; BEGIN DECLARE x int DEFAULT 1; if true then BEGIN DECLARE x int DEFAULT 2; select x ; END; end if; SELECT x as `outer`; END; select x as outest; END; call test.test();
3、对变量赋值 。SQL语言不允许以x=x+1的形式对变量进行赋值,必须使用SET或SELECT INTO命令做这件事。后者都是SELECT命令的一程变体,它以INTO varname 结果整条命令。这种语法变量要求SELECT命令返回且只能返回一条数据记录(不请允许是多条记录)。请注意,在函数里只能使用SET命令对变量赋值,这是因为函数里不允许使用SELECT或其他SQL命令。
# 在普通环境中使用变量例子 set @var1 = value1, @var2 = value2; select @var1:=value2; select 2 * 7 into var1; select @total:=count(*) from table where id =1 into @total; select @total:=count(*) from table where id =1 ; select title,subtitle from table1 where id =1 into @var_title,@var_subtitle; SELECT id, data INTO x, y FROM test.t1 LIMIT 1;
# 在存储过程中使用变量例子。 drop procedure if exists test.total; create procedure test.total() BEGIN declare x int default 0; select count(*) from name1 into x; select x; END; call total();
4、出错处理(出错处理句柄)
SP里的SQL命令在执行过程中可能会出错,所以SQL也像其他一些程序设计语言那样向程序员提供了一种利用出错处理句柄(error handler,也有称为“出错处理器”)来响应和处理这类错误的机制。
在一个Begin-end语句块里对出错处理句柄的定义必须出现在变量、光标、出错条件的声明之后、其他SQL命令之前;具体语法如下所示:
declare type handler for condition1, condition2, condition3;
下面对这个语法中的type、condition和command进行解释。
增加分类记录的存储过程:
表结构的SQL:
CREATE TABLE `categories` ( `id` int(10) unsigned NOT NULL auto_increment, `name` varchar(100) default NULL, `parent_id` int(10) unsigned default NULL, PRIMARY KEY (`id`) ) ;
drop procedure if exists test.test_insert; create procedure test.test_insert(in newcatname varchar(100), in parent int, out newid int) proc:BEGIN declare cnt int; set newid = -1; -- validation select count(*) from test.categories where parent_id = parent into cnt; if ISNULL(newcatname) or TRIM(newcatname) ="" then leave proc; end if; select count(*) from test.categories WHERE parent_id = parent and `name` = newcatname into cnt; if cnt =1 then select id from test.categories WHERE parent_id = parent and `name` = newcatname into newid; leave proc; end if; insert into test.categories (`name`,parent_id)values(newcatname,parent); set newid = LAST_INSERT_ID(); end proc; -- 调用不能与创建语句同时执行? call test.test_insert("category name 2",0,@newid); select @newid;
夺
发表评论
-
mysql中计算两点坐标距离
2016-09-12 15:35 112CREATE FUNCTION `calc_distanc ... -
在window 单机环境下将mysql cluster创建为自启动服务
2013-08-22 21:17 2044假设我的mysql cluster根目录是:D:\d ... -
mysql cluster 的一些错误解决方法记录。
2013-08-21 14:57 13231、ndb_mgmd的配置文件编码问题导致解析错误 ... -
Ubuntu 11.04 x64 编译安装mysql
2012-09-15 18:28 1353转自:http://www.cnblogs.com/sin ... -
面试时 遇到一个数据库SQL 成绩排名
2012-07-17 09:55 10301、累积排名 SELECT NAME ... -
ubuntu 11.4 二进制文件(tar.gz) 安装 mysql 5.5.x
2012-02-22 21:11 1171sudo /etc/init.d/mysql.server ... -
SQL 分组统计 两个字段 行转列
2012-02-08 17:20 4148select c.MRL,c.OPERATION_ID,c. ... -
记录错位方法
2011-05-28 21:03 908目的: select `value` ... -
你的MySQL安全了吗?加铸23道安全门
2011-03-22 12:39 1035使用MySQL,安全问题不能不注意。以下是MySQL提示的 ... -
MySQL函数的创建
2011-03-19 23:15 996drop function if exists shorten ... -
Mysql 配置SSL
2011-03-16 10:26 1269[client] ssl-ca=$DIR/cacert.pe ... -
Mysql SSL 配置
2011-03-16 10:15 3590转自:http://www.cnblogs.com/huqin ... -
在Navicate中使用 提示输入 方式输入SQL的参数。
2011-03-01 17:56 972select [$输入A] 输入参考: sele ... -
MySQL 地理时区管理
2011-01-14 11:33 1991MySQL经常被人们 ... -
两个不同表的SUM值相减
2011-01-12 15:39 1347select z.num2 - x.num1 from ( ... -
查询某条记录的前后两条
2011-01-07 11:05 704id target num 1 Gen ... -
navicate 9 注册码
2011-01-02 13:44 1597名:I Love China 组织:I Love China ... -
Percona Server 5.1.47-11.1 试用手记
2010-11-12 14:44 1963转自:http://seo3721.appspot.com/6 ... -
SQL获取上个月最后一个周末两天
2010-10-28 16:41 1505该语句可以获得: 上个月最后一个周末两天 ... -
MySQL where与having的区别
2010-10-28 10:51 1573WHERE子句是在第一步从表或视图中配全SELECT子句把数 ...
相关推荐
本实例展示了如何在MySQL存储过程中实现异常处理,以捕获并处理可能出现的错误。 首先,我们注意到在创建存储过程`myProc`时,使用了`delimiter $$`来改变MySQL客户端的语句分隔符,这是为了在存储过程中使用多个...
调用存储过程使用`CALL`关键字,将参数值传递给对应的参数名。继续以上例,调用存储过程的方式如下: ```sql CALL addNumbers(3, 5, @sum); SELECT @sum; -- 输出结果为 8 ``` 四、存储过程中的控制结构 1. 条件...
本教程结合"mysql经典教程+mysql存储过程讲解"的主题,将深入探讨MySQL的基础知识以及核心特性——存储过程。 首先,我们需要理解什么是数据库。数据库是一个组织和存储数据的系统,允许用户以结构化方式访问和管理...
本文实例讲述了mysql存储过程之返回多个值的方法。分享给大家供大家参考,具体如下: mysql存储函数只返回一个值。要开发返回多个值的存储过程,需要使用带有INOUT或OUT参数的存储过程。咱们先来看一个orders表它的...
Mysql存储过程常用语句模板(含变量,if,三种循环等等) Mysql存储过程常用语句模板(含变量,if,三种循环等等) Mysql存储过程常用语句模板(含变量,if,三种循环等等) Mysql存储过程常用语句模板(含变量,if,三...
c++实现调mysql存储过程,实现存储过程的出参入参,可以支持查询多数据返回,还有存储过程的复杂数据的增删改等
MySQL 存储过程编程是指在 MySQL 数据库中使用存储过程来实现业务逻辑的编程技术。存储过程是一种可以在数据库中存储和执行的程序单元,它可以实现复杂的业务逻辑和数据处理操作。 在 MySQL 5.0 中,存储过程的...
注意,如果你的存储过程使用了用户定义的变量或会改变当前会话的状态,可能需要使用`DEFINER`或`Invoker Rights`来控制执行权限。在上述的`show procedure status`查询中,`Security_type`列显示为`DEFINER`,这意味...
MySQL存储过程是数据库管理系统中的一种重要功能,它允许开发者预编译一系列的SQL语句,形成一个可重复使用的代码块,以提高数据处理的效率和应用程序的性能。在这个"MySQL存储过程学习"的主题中,我们将深入探讨...
MySQL存储过程是数据库管理系统中的一个重要特性,它允许程序员或数据库管理员预先定义一组SQL语句,形成一个可重用的逻辑单元。在这个“MySQL存储过程入门到精通”资料中,你将深入理解存储过程的原理、创建、调用...
最后,"mysql存储过程.pdf"专注于MySQL的存储过程。存储过程是预编译的SQL语句集合,可以提高数据库操作的性能,减少网络流量,并增强数据安全。在PDF文档中,你将学习如何定义、调用和管理存储过程,以及如何使用...
MySQL存储过程是数据库管理系统中的一种重要功能,它允许开发者编写一系列复杂的SQL语句,并作为一个单元进行执行,提高代码复用性和效率。然而,与普通的编程语言一样,存储过程的调试同样至关重要,因为错误的存储...
资源包中囊括了MySQL数据库中的存储过程的...该资源下所有内容都是本人的日常软件开发经验总结,对于初学者使用MySQL存储过程的程序员具有重要参考价值,问大家要10分是不过分的,用过就知道了,欢迎大家下载参考及使用
总的来说,掌握MySQL存储过程的使用是提升数据库管理和开发能力的关键步骤,能够有效优化数据库性能,简化复杂的操作,并提高代码的可维护性。通过阅读"MySQL存储过程.pdf"这份教程,你将能深入理解存储过程的原理,...
根据题目提供的信息,下面将详细介绍如何使用MySQL存储过程实现分页功能: ```sql CREATE PROCEDURE paging( IN name VARCHAR(1024), // 表名 IN fields VARCHAR(1024), // 查询字段 IN size INT, // 每页显示的...
MySQL 存储过程实例 MySQL 存储过程实例详细介绍了 MySQL 存储过程的开发步骤,本节将通过具体的实例讲解 PHP 是如何操纵 MySQL 存储过程的。 创建存储过程 存储过程的创建是 MySQL 存储过程的基础,MySQL 5.0 ...
MySQL存储过程 MySQL存储过程(Stored Procedure)是一种复杂的数据库对象,允许用户将多个SQL语句组合成一个单一的执行单元,以提高数据库的性能和可维护性。下面是 MySQL 存储过程的相关知识点: 存储过程的定义...