数据库存储过程

存储过程:

是一组为了完成特定功能的sql语句的集合。类似于函数。
写好了一个存储过程之后,我们可以像函数一样随时调用sql的集合。

复杂的,需要很多sql语句联合执行完成的任务。
存储过程在执行上比sql语句的执行速度要快,效率也更高。

创建存储过程:

delimiter $$
create procedure proc ()
begin 
select * from info12;
end $$
delimiter;

delimiter $$(将语句的结束符号从分号,临时改变成两个$$)
create procedure proc ()
创建存储过程proc,不能重复,在当前库中唯一。()里面不定义任何方法。
BEGIN    (过程体开始的关键字)
select * from info;(begin后面跟上的是需要执行的sql语句。)
end $$     (整个语句结束,和上面的定义开始符号一一对应)
delimiter;    (将结束符号恢复成分号)

delimiter的作用保证整个存储过程的中的sql语句能够被完整的执行。否则可能在前面的SQL语句结束运行。

SHOW CREATE PROCEDURE Proc;查看

SHOW CREATE PROCEDURE Proc\G

show procedure status where db='kgc';
show procedure status like '%proc%';查看全库
call proc;调用

drop procedure if exists proc;删除

存储过程的参数运用

1、in输入参数,调用者向存储过程传入值
2、out输出参数,表示存储过程向调用者传出值。(可以返回多个值)
3、INOUT:表示调用者向存储过程传入值,存储过程对传入值可能进行额外的操作之后,返回给调用者。

1传入参数的存储过程 :

mysql> delimiter $$
mysql> create procedure proc3 (in uname char(20))
    -> begin
    -> select * from student where name=uname;
    -> delete from student where name=uname;
    -> select * from student;
    -> end $$
mysql> delimiter ;

call proc3 ('张三');调用传参的存储过程 

2传出参数的存储过程(out)

mysql> delimiter $$
mysql> create procedure test(out num int)
    -> begin
    -> set num=100;
    -> end $$
 mysql> delimiter ;
 

3输入输出参数(inout) 

mysql> create procedure proc5 (inout a int)  
    -> begin
    -> select a;
    -> set a=a+10;
    -> select a;
    -> end $$
delimiter ;

存储过程的控制语句 

 if条件判断语句

mysql> delimiter $$
mysql> create procedure test2(in num int)
    -> begin
    -> if num >=10 then
    -> set num=num-5;
    -> else 
    -> set num=num*2;
    -> end if;
    -> select num;
    -> end $$
mysql> delimiter ;

while循环条件语句 

mysql> delimiter $$                                                                                                       
mysql> create procedure test3 ()
    -> begin
    -> declare a int;
    -> declare i int;
    -> set a=10;
    -> set i=1;
    -> while i<=10 do
    -> set a=a+10;
    -> set i=i+1;
    -> end while ;
    -> select a;
    -> end $$ 
mysql> delimiter ;

注意点:使用存储过程中,在内部变量不需要加@,外部使用和复制要加@,引用变量
              在存储过程begin之后声明变量:declare a INT;declare i INT;声明变量要加数据类 
              型。
               要想使用存储过程里面的结果,必须要out才能传出参数。在声明存储变量是,要 
               定义好参数的传参方式in out INOUT。

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

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

相关文章

【Spring Boot 源码学习】初识 SpringApplication

Spring Boot 源码学习系列 初识 SpringApplication 引言往期内容主要内容1. Spring Boot 应用程序的启动2. SpringApplication 的实例化2.1 构造方法参数2.2 Web 应用类型推断2.3 加载 BootstrapRegistryInitializer2.4 加载 ApplicationContextInitializer2.5 加载 Applicatio…

计算机底层的秘密 摘抄笔记

https://www.bookstack.cn/read/webxiaohua-gitbook/README.md 大部分是摘抄 机器指令需要加载到内存中执行&#xff0c;因此需要记录下内存的起始地址和长度&#xff1b;同时要找到函数的入口地址并写到PC寄存器中&#xff0c;想一想这是不是需要一个数据结构来记录下这些信…

vue项目路由使用history模式,nginx配置,刷新页面显示404

需要在配置项中添加 try_files $uri $uri/ /index.html;

Technology Strategy Patterns 学习笔记9 - bringing it all together

1 Patterns Map 2 Creating the Strategy 2.1 Ansoff Growth Matrix 和owth-share Matrix 区别参见https://fourweekmba.com/bcg-matrix-vs-ansoff-matrix/ 3 Communicating

Git系列之分支与标签的使用及应用场景模拟

&#x1f389;&#x1f389;欢迎来到我的CSDN主页&#xff01;&#x1f389;&#x1f389; &#x1f3c5;我是君易--鑨&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; &#x1f31f;推荐给大家我的博客专栏《Git实战开发》。&#x1f3af;&#x1f3af; &a…

WPF ToggleButton 主题切换动画按钮

WPF ToggleButton 主题切换动画按钮 仿造最近看到的html中的一个效果&#xff0c;大致思路是文章这样&#xff0c;感觉还可以再雕琢一下。 代码如下 XAML: <UserControl x:Class"WPFSwitch.AnimationSwitch"xmlns"http://schemas.microsoft.com/winfx/200…

基于php+thinphp+vue的教材管理系统

运行环境 开发语言&#xff1a;PHP 数据库:MYSQL数据库 应用服务:apache服务器 使用框架:ThinkPHPvue 开发工具:VScode/Dreamweaver/PhpStorm等均可 项目简介 教材管理系统&#xff0c;主要的模块包括首页、个人中心、学生管理、老师管理、教材征订管理、教师教材退订管理、…

leetcode刷题 - SQL - 中等

1. 176. 第二高的薪水 筛选出第二大 查询并返回 Employee 表中第二高的薪水 。如果不存在第二高的薪水&#xff0c;查询应该返回 null(Pandas 则返回 None) 。查询结果如下例所示。 666中等的第一题就上强度 强行解法 select max(salary) as SecondHighestSalary from Emp…

uni-app点击按钮弹出提示框-uni.showModal(OBJECT),选择确定和取消

参考文档&#xff1a; https://uniapp.dcloud.io/api/ui/prompt?idshowmodal 显示模态弹窗&#xff0c;可以只有一个确定按钮&#xff0c;也可以同时有确定和取消按钮。类似于一个API整合了 html 中&#xff1a;alert、confirm。 uni.showModal({title: 提示,content: 这是一…

Ansible优化大全

文章目录 一、关闭系统信息收集二、开启加速 Ansible 执行速度修改配置文件/etc/ansible/ansible.cfg由于该功能与sudo冲突&#xff0c;必须关闭 requiretty 选项方法一方法二 参考文章&#xff1a; https://blog.csdn.net/o0o0o0D/article/details/110998873 一、关闭系统信息…

第22章_数据库的设计规范

文章目录 范式的概念三范式范式一范式二范式三 反范式总结 范式的概念 为了建立冗余较小、结构合理的数据库&#xff0c;设计数据库时必须遵循一定的规则。在关系型数据库中这种规则就称为范式。范式是符合某一种设计要求的总结。要想设计一个结构合理的关系型数据库&#xff…

彻底解决Win11锁屏界面黑屏或者图片不变化

问题描述 今天不知道干了啥&#xff0c;一顿操作后&#xff0c;win11的锁屏界面的图片就变成固定的了&#xff0c;原来是有windows聚焦的图片在自动变化的效果&#xff0c;现在没有了。然后就各种搜索求助&#xff0c;第二顿操作之后&#xff0c;锁屏界面彻底变成了黑色&#…