存储过程学习文档

sql存储过程帮助文档 sql存储过程帮助文档!!!!!!!!!!!! 立即下载


存储过程是存储在数据库中可重复使用的一段程序代码,一个存储过程包含名字,参数列表,以及一些sql语句集,复杂一点的还有控制结构、异常处理、游标等等

 

那么我们为什么要使用存储过程

Ø  存储过程是已经被认证的技术

Ø  存储过程是重复使用的组件

Ø  存储过程会使系统运行更快

Ø  存储过程具有可移植性

Ø  保证数据库的安全性和完整性

Ø  灵活性

 

存储过程的基本知识

1.         变量

Ø  用户变量

用户变量在整个会话期间都会存在,用@申明用户变量

Ø  局部变量

局部变量在使用之前必须先申明,局部变量可以在开始-结束块内申明,申明后,变量可以在相关的块内使用,包括所有的子块!

使用declare来申明一个局部变量,例如:

DECLARE test VARCHAR(20);

DECLARE i INT DEFAULT 20;

DECLARE t INT DEFAULT (SELECT COUNT(*) FROM test);

2.         Set赋值

使用set命令对变量进行赋值,比如:

set aaa=1;

3.         参数

Ø  输入参数,使用关键字IN。

举例:IN aaa VARCHAR(20)

Ø  输出参数,使用关键字OUT

举例:OUT aaa VARCHAR(20)

Ø  输入/输出参数,使用关键字INOUT

举例:INOUT aaa VARCHAR(20)

4.         流程控制语句

Ø  IF语句

语法格式:

IF search_condition THEN

    statement_list 

[ELSEIF search_condition THEN] 

    statement_list ... 

[ELSE

    statement_list] 

END IF

 

Ø  CASE语句

语法格式为:

CASE case_value 

    WHEN when_value THEN statement_list 

    [WHEN when_value THEN statement_list] ... 

    [ELSE statement_list] 

END CASE

或者 

CASE

    WHEN search_condition THEN statement_list 

    [WHEN search_condition THEN statement_list] ... 

    [ELSE statement_list] 

END CASE

 

Ø  WHILE语句

[begin_label:] WHILE search_condition DO

    statement_list

END WHILE [end_label]

Label可有可无

 

Ø  REPEAT语句

[begin_label:] REPEAT

    statement_list

UNTIL search_condition

END REPEAT [end_label]

Label可有可无

 

Ø  LOOP语句

[begin_label:] LOOP

    statement_list

END LOOP [end_label]

 

Ø  LEAVE语句

LEAVE label

这个语句被用来退出任何被标注的流程控制构造。它和BEGIN ... END或循环一起被使用

 

Ø  ITERATE语句

ITERATE label

ITERATE只可以出现在LOOP, REPEAT, 和WHILE语句内。ITERATE意思为:“再次循环。”

 

5.         DECLARE处理程序

语法:

DECLARE handler_type HANDLER FOR condition_value[,...] sp_statement

 

handler_type:

  | CONTINUE

  | EXIT

  | UNDO

 

condition_value:

    SQLSTATE [VALUE] sqlstate_value

  | condition_name

  | SQLWARNING

  | NOT FOUND

  | SQLEXCEPTION

  | mysql_error_code

举例:DECLARE CONTINUE HANDLER FOR SQLSTATE '23000' SET error='haha';

 

6.         游标

光标必须在声明处理程序之前被声明,并且变量和条件必须在声明光标或处理程序之前被声明。

语法:

DECLARE cursor_name CURSOR FOR select_statement   #申明游标

OPEN cursor_name                                                                     #打开先前申明的游标

FETCH cursor_name INTO var_name [, var_name] ...       #读取游标的数据,移动指针

CLOSE cursor_name                                                                    #关闭游标       

 

 

存储过程的创建过程以及实例

存储程序分别是用create procedure语句,一个程序要么是一个程序要么是一个函数,使用call语句来调用程序,并且程序只能用输出变量传回值;

要想在MySql5.1中创建子程序,必须具有create routine权限,并且alter routine和execute权限被自动授予它的创建者;

首先声明分隔符,所谓分隔符是指你通知mysql客户端你已经输入一个sql语句的字符或字符串符号,在这里我们就以“//”为分隔符;

下面看一个完整的例子:

 

DELIMITER //

#创建一个名字为add_data的存储过程,批量插入数据,并设置输入输出参数

CREATE PROCEDURE add_data (IN c_count INT,OUT result INT,OUT starttime DATETIME,OUT endtime DATETIME)

#申明存储过程开始

BEGIN

#申明变量

DECLARE c_name VARCHAR(20) DEFAULT 'zhang';

#使用select into语句设置获取执行开始的时间

SELECT NOW() INTO starttime;

#使用while循环

WHILE c_count <= 100000 DO

INSERT INTO a (id,`name`) VALUES(c_count,CONCAT(c_name,c_count));

SET c_count=c_count+1;

END WHILE;

#使用select into语句设置获取执行结束的时间

SELECT NOW() INTO endtime;

#使用输出参数获取最大的id值

SELECT MAX(id) INTO result FROM a;

#到这里,整个存储过程就算写完啦

END

//

#调用存储过程

Call add_data(1,@result,@starttime,@endtime);

#获取执行结果:

Select @result,@starttime,@endtime;

 

一个简单的关于游标使用的例子:

DELIMITER //

CREATE PROCEDURE add_data()

BEGIN

DECLARE done INT DEFAULT 0;

DECLARE aa INT;

DECLARE bb VARCHAR(20);

DECLARE cur1 CURSOR FOR SELECT id,`name` FROM a;

DECLARE CONTINUE HANDLER FOR NOT FOUND SET FOUND=FALSE;

OPEN cur1;

FETCH cur1 INTO aa,bb;

WHILE FOUND DO

IF aa > 3 THEN

INSERT INTO t VALUES(aa,bb);

END IF;

FETCH cur1 INTO aa,bb;

END WHILE;

CLOSE cur1;

END


转载自http://blog.chinaunix.net/uid-20639775-id-431954.html     在此感谢作者

SQL存储过程文档(无毒,无害) SQL存储过程是一个TXT文档 新手们可以看看 高手们就不用看了省的骂我 立即下载

相关推荐

存储过程文档--mysql

存储过程文档的书名(mysql),例子等

MySQL中的存储过程(详细篇)

概述 由MySQL5.0 版本开始支持存储过程。 如果在实现用户的某些需求时,需要编写一组复杂的SQL语句才能实现的时候,那么我们就可以将这组复杂的SQL语句集提前编写在数据库中,由JDBC调用来执行这组SQL语句。把编写在数据库中的SQL语句集称为存储过程。 存储过程:(PROCEDURE)是事先经过编译并存储在数据库中的一段SQL语句的集合。调用存储过程可以简化应用开发人员的很多工作,减少数据在数据库和应用服务器之间的传输,对于提高数据处理的效率是很有好处的。 就是数据库 SQL 语言层面的代码封装与.

古城的博客 13万+

存储过程基本语法world文档

DB2数据库存储过程,介绍DB数据库的运行原理和使用方法

MySQL存储过程

一、存储过程 1.1 什么是存储过程 存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,它存储在数据库中,一次编译后永久有效,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象。在数据量特别庞大的情况下利用存储过程能达到倍速的效率提升 1.2 数据库存储过程程序 当我们了了解存储过程是什么之后,就需要了解数据库中存在的这三种类型的数据库存储类型程序,如下: 存储过程:存储过程是最常见.

az44yao的专栏 437

oracle存储过程使用文档

oracle存储过程使用文档中描述了存储过程创建的过程,和一些注意事项

存储过程学习1

存储过程学习一 ,基本用法等等 后续更新。

MySQL中存储过程(详解,一篇就够了!!!)

存储过程是事先经过编译并存储在数据库中的一段SOL语句的集合,调用存储过程可以简化应用开发人员的很多工作,减少数据在数据库和应用服务器之间的传输,对于提高数据处理的效率是有好处的。存储过程思想上很简单,就是数据库 SOL语言层面的代码封装与重用。

Z_CH8648的博客 2万+

Win10 有线网卡配置静态IP后,出现两个IPv4地址的解决方法

在我使用有线网络连接局域网时,配置了静态IP之后,发现网络并没有通,检查之后发现“以太网状态”-“网络连接详细信息”中,出现了2个IPv4的地址(一个是DHCP分配的169.254.xx.xx的IP,另一个是我配置的静态地址),但是网络是没有正常与我所配置的静态地址正常通信的。这个是我执行后的截图,重启电脑后以太网配置静态IP,恢复正常。最终我查了好多网络上的解决办法,有些办法并没有解决我的问题。这个是网上别人的问题截图,我的也是类似这种。第一种(没有解决我的问题)第二种(没有解决我的问题)

Zlz_Nike的博客 2万+

dba 存储过程基本文档

在db2命令行中进行操作:1.开始-运行,输入CMD,执行db2cw命令进入db2命令行模式2.再输入db2后,便可以输入SQL语句进行执行;如果不输入,则需要db2 "SQL语句"来执行备注,命令回车提示成功后,对于INSERT则一定要进行COMMIT,否则无效 --创建表结构db2 "create table tablename as (SELECT row_number...

weixin_30278311的博客 250

【软件安装系列】Ubuntu+mysql5.7.27+Jira8.3.1+邮箱服务器配置+Confluence6.15.7安装经验和采坑总结

文章目录一、软件准备(百度云易被吞,就不放了)1.1 官网下载的新鲜的Jira和Confluence1.2 linux的jdk一份1.3 Jira和Confluence的破解程序或者破解包一份1.4 java的连接器一份二、安装过程1--java环境配置2.1 将下载下来的jdk包解压在/usr/local/java目录中2.2 写入环境变量三、安装过程2--mysql5.7.27环境配置3.1 ...

xiaosha_的博客 6895

bert-ini:一种基于bert的实体对齐交互模型

本次分享一项来自IJCAI-20的实体对齐工作,该工作提出了一种不同于以往的采用图结构信息进行实体对齐的技术方案,该方案取得了当时的最好效果;不仅如此,模型本身的对齐效率在该项工作中也被考虑,实际工作中非常具备借鉴意义。

qq_33331424的博客 3155

jfinal mysql存储过程_JFinal 文档、资料、学习、API,调用存储过程

使用工具类 Db 可以很方便调用存储过程,以下是代码示例:Db.execute((connection)->{CallableStatementcs=connection.prepareCall(...);cs.setObject(1,...);cs.setObject(2,...);cs.execute();cs.close();returncs.getObject(1);...

weixin_35835184的博客 240

SpringCloud2025+SpringBoot3.5.0动态路由503问题排查与负载均衡依赖解析

本文详细排查了SpringCloud 2025与SpringBoot 3.5.0环境下,Spring Cloud Gateway动态路由返回503错误的根本原因。核心问题在于新版网关未默认集成负载均衡器,导致无法解析lb://服务名。通过对比静态路由与动态路由,定位到需显式引入spring-cloud-starter-loadbalancer依赖,并提供了完整的解决方案与最佳实践配置。

s3t4u的博客 504

初试mysql存储过程,记录一下

今天第一次试用mysql的存储过程,最后发现不太适合我的需要,存储过程不能传递数组作为参数... 下面一小段代码,记录一下学习的过程: [code="sql"]delimiter // drop procedure if exists queryCount// create procedure queryCount(out cnt int) begin declare co...

auzll 143

uniapp - [全端兼容] 详解实现国际化多语言切换全流程及示例,全部页面中英文多语言随意切换即时生效,语言切换全项目立即变化可自定义新增各国其他语言,uniApp实现中英文语言切换完整源码教程!

uni-app,h5移动端网页,微信小程序,支付宝小程序,Android安卓,苹果ios,app,nvue,uniapp多语言实现,uni-app项目使用多语言切换功能,中英文切换,uniapp实现中英文语言切换,uniApp实现国际化多语言切换,中文英文之间的更换,Uniapp使用什么插件能支持多种语言,退出后重启依然能让语言保留,设置可切换中英文,uniapp国际化页面双语/顶部导航双语/根据系统语言双语,标题栏文字原生底部菜单tabbar怎么改,使用vue-i18n国际化多国语言,全平台i18n插件,

🏆 前端领域优质创作者 1万+

编织数据的实时脉络——构建基于MySQL的数据编织平台,实现实时数据治理

除了上述基本设置外,我们还可以根据实际应用场景自定义一些特定的监控项目。例如,对于某些高并发读写的表,可能需要特别关注它们的锁等待时间和回滚段使用率;而对于涉及到跨库关联查询的操作,则应当着重检查网络延迟及缓存命中率等因素。-- 获取InnoDB行级锁等待情况-- 统计各表的缓存命中率这段SQL脚本不仅展示了如何查询InnoDB引擎下的锁争用状况,还介绍了计算表级别缓存命中率的方法,有助于深入理解系统的运行状态。

墨夶的博客 1789

Oracle在存储过程中如何返回结果集

&#13; Oracle和Sqlserver不一样的地方有很多。&#13; 个人最深的体会是存储过程返回结果集,在Sqlserver中直接select查询就行,Oracle就不行了。&#13; 这里,就用最简单的例子说明存储过程返回结果集的例子&#13; &#13; CREATE OR REPLACE PROCEDURE 存储过程名(&#13; 字段名 in VARCHAR...

a406502972的专栏 858

YOLOv8【第十二章:数据增强与数据工程篇·第10节】主动学习(Active Learning):如何挑选最有价值的样本进行标注!

🏆 本文收录于 《YOLOv8实战:从入门到深度优化》 专栏。该专栏系统复现并梳理全网各类 YOLOv8 改进与实战案例(当前已覆盖分类 / 检测 / 分割 / 追踪 / 关键点 / OBB 检测等方向),坚持持续更新 + 深度解析,质量分长期稳定在 97 分以上,可视为当前市面上 覆盖较全、更新较快、实战导向极强 的 YOLO 改进系列内容之一。

**My Coding Family** 509

Linux调Oracle存储过程,Oracle存储过程学习

之前写过,后来很久不写,既然全部忘记了。这里重新学习Oracle的存储过程,希望看到的人不要见笑。首先都知道存储过程的开头语句是CREATE OR REPLACE PROCEDURE (VAR in type,VAR out type, .....)AS | IS 但从变量申明开始变量类型有哪些? BEGIN后逻辑语句有哪些,我就记不清楚了。这里先给个简单的栗子CREATEORREPLACE...

weixin_42371234的博客 488

全新YOLOv11一文弄懂 | YOLOv11网络结构解读 、yolov11.yaml配置文件详细解读与说明、模型训练参数详细解析 | 通俗易懂!入门必看系列!

本文全面介绍了YOLOv11目标检测算法,包含网络结构解析、yaml配置文件详解及训练教程。YOLOv11通过改进的C3k2f模块、SPPF和C2PSA注意力机制等创新设计,在COCO数据集上实现了比YOLOv8更优的性能。文章详细解读了yolov11.yaml配置文件的参数设置、主干网络(backbone)和头部网络(head)结构,并提供了完整的训练代码示例和参数说明。训练部分涵盖了模型选择、参数设置及优化技巧,包括epochs、batch size、学习率等关键参数的调整建议。最后总结了YOLOv11

Ai缝合怪、助力小伙伴高效发论文 3万+

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

【MySQL】存储过程、游标、循环简单实例

有时候仅凭 sql 语句可能达不到想要的数据操作目的,有可能需要写一些方法体,通过循环判断等操作最终达到目的。那么在数据库里实现这种方法体就需要存储过程了,个人觉得一个带注释的简单实例可以简单粗暴地解决大部分问题,当然要深入学习了解的话还是要看教程文档了,话不多说,上码: create procedure my_procedure() -- 创建存储过程begin -- 开始存储过程declare my_id...

Pannahouse的博客 338

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

pl/sql工具下oracle存储过程学习笔记

最近用到oracle存储过程比较多,于是系统学习下。目前仅为学习过程中遇到的问题予以记录,不能保证都正确。 1.begin end 语句块之间的语句都要以";"结束(新手经常忘记) 2.在存储过程中is和as的效果是一样的。 3.参数和变量的区别。用于与存储过程交换数据,存储过程内部定义变量,写代码的需要,有时候需要变量来临时保存一些值。类似于java后台方法的参数。 4.将结果赋值给变量

YFairytail的博客 519

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

通过Jmeter压测存储过程

其他配置如查询结果树,聚合报告,TPS,PerfMon监控等,同基础Jmeter配置

软件测试技术分享官 205

MYSQL 存储过程与自定义函数的区别

最近在学习mysql的存储过程,看了慕课网的视频后,现在将一些学习笔记放在博客上:

茅丝录的博客 477

pgsql执行动态sql语句的存储过程

上述代码创建了一个名为get_employee_details的存储过程,该过程接受一个参数:p_employee_id表示员工ID。存储过程返回一个表,包含员工的详细信息,包括员工ID、名字、姓氏和部门名称。**

weixin_48811255的博客 1251
上一篇: js中设置背景图片的路径获得方法
下一篇: jdbc连接oracle10g测试数据库插入
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值