当前位置: 首页 > news >正文

发布培训的免费网站模板下载山西太原做企业网站建设的公司

发布培训的免费网站模板下载,山西太原做企业网站建设的公司,自己做网站怎么跳过备案,列表网推广收费标准存储过程 1、基础语法2、变量2.1 系统变量2.2 用户自定义变量2.3 局部变量 3、if 流程控制4、参数5、case 流程控制6、循环结构6.1 while 循环6.2 repeat 循环6.3 loop 循环 7、游标 存储过程是事先经过编译并存储在数据库中的一段 SQL 语句的集合#xff0c;调用存储过程可以… 存储过程 1、基础语法2、变量2.1 系统变量2.2 用户自定义变量2.3 局部变量 3、if 流程控制4、参数5、case 流程控制6、循环结构6.1 while 循环6.2 repeat 循环6.3 loop 循环 7、游标 存储过程是事先经过编译并存储在数据库中的一段 SQL 语句的集合调用存储过程可以简化应用开发人员的很多工作减少数据在数据库和服务器之间的传输对于提高数据处理的效率是有好处的。 存储过程就是数据库 SQL 语言层面的代码封装与重用。 特点 1- 封装、复用 2- 可以接收参数也可以返回数据 3- 减少网络交互效率提升 1、基础语法 创建 -- 创建存储过程 create procedure 存储过程名称([参数列表]) beginSQL 语句; end;-- 范例 create procedure p1() beginselect * from user;select id, name from emp where id 10; end;在命令行中执行创建存储过程的 SQL 时需要通过关键字 delimiter 指定 SQL 语句的结束符。 -- 例如指定 为 SQL 语句的结束符 delimiter 调用 -- 调用存储过程 call 存储过程名称([参数列表]);-- 范例 call p1();查看 -- 查询指定数据库的存储过程及状态信息 -- xxx指定数据库 select * from information_schema.routines where routine_schema xxx;-- 查询某个存储过程的定义 show create procedure 存储过程名称;删除 -- 删除存储过程 drop procedure [if exists] 存储过程名称;2、变量 变量有三种系统变量用户自定义变量局部变量。 2.1 系统变量 系统变量是 MySQL 服务器提供不是用户定义的属于服务器层面。分为全局变量global、会话变量session。默认是 session 级别。 查看系统变量语法 -- 查看所有系统变量 show [global | session] variables;-- 可以通过 like 模糊匹配方式查找变量 show [global | session] variables like ...;-- 查看指定变量的值注意globalsession后面需要加. select [global. | session.]系统变量名;设置系统变量语法 set [global | session] 系统变量名 值;set [global | session]系统变量名 值;2.2 用户自定义变量 用户自定义变量是用户根据需要自己定义的变量用户变量不用提前声明在用的时候直接用 “变量名” 使用就可以了。其作用域为当前连接。 给用户自定义变量赋值语法 -- 使用 set 方式赋值 set var_name expr [, var_name expr...]; -- 推荐使用 : 进行赋值。因为 MySQL 中的赋值运算符和比较运算符都是 为了区分推荐使用 : set var_name : expr [, var_name : expr...];-- 使用 select 方式赋值 select var_name : expr [, var_name : expr...];-- 将 table_name 表中的 column_name 字段的值赋值给 var_name 变量 select column_name into var_name from table_name;使用自定义变量语法 select var_name [, var_name...];用户定义的变量无需对其进行声明或初始化只不过获取到的值为 NULL。 2.3 局部变量 局部变量是根据需要定义的在局部生效的变量访问之前需要 declare 声明。可用作存储过程内的局部变量和输入参数局部变量的范围是在存储过程内声明的 begin … end 块内。 局部变量声明语法 -- 声明局部变量需要指定变量类型 -- 变量类型就是数据库字段类型int、bigint、char、varchar、date、time等。 -- 可以使用 default 指定默认值 declare 变量名 变量类型 [default ...];局部变量赋值语法 set 变量名 值;set 变量名 : 值;select 字段名 into 变量名 from 表名...;3、if 流程控制 语法 if 条件1 then... elseif 条件2 then -- 可选... else -- 可选... end if;案例 -- 根据定义的分数 score 变量判定当前分数对应的分数等级 -- score 85等级为优秀 -- score 60且 score 85等级为及格 -- score 60等级为不及格create procedure p1() begindeclare score int default 58;declare result varchar(10);if score 85 thenset result : 优秀;elseif score 60 thenset result : 及格;else set result : 不及格;end if;select result; end;4、参数 存储过程的参数有三种 类型含义in该类参数作为输入也就是需要调用时传入值默认out该类参数作为输出也就是该参数可以作为返回值inout既可以作为输入参数也可以作为输出参数 语法 create procedure 存储过程名称([in/out/inout 参数名 参数类型]) begin-- sql 语句 end;案例1成绩等级评定 -- 根据传入的分数 score 变量判定当前分数对应的分数等级并返回 -- score 85等级为优秀 -- score 60且 score 85等级为及格 -- score 60等级为不及格create procedure p1(in score int, out result varchar(10)) beginif score 85 thenset result : 优秀;elseif score 60 thenset result : 及格;elseset result : 不及格;end if; end;-- 调用该存储过程 -- 输出参数需要用户自定义变量接收 call p1(68, result); -- 展示结果 select result;案例2成绩转换 -- 将传入的 200 分制的分数进行换算换算成百分制然后返回 create procedure p2(inout score double) beginset score : score * 0.5; end;-- 由于是 inout 类型的参数所以在调用该存储过程前需要准备一个自定义变量并赋值 set score : 78; -- 调用该存储过程 call p2(score); -- 展示转换结果 select score;5、case 流程控制 语法 -- 语法一 case case_valuewhen when_value1 then statement_list1[when when_value2 then statement_list2]...[else statement_list] end case;-- 语法二 case when search_condition1 then statement_list1[when search_condition2 then statement_list2]...[else statement_list] end case;案例 -- 根据传入的月份判定月份所属的季节要求采用 case 结构 -- 1. 1-3月份为第一季度 -- 2. 4-6月份为第二季度 -- 3. 7-9月份为第三季度 -- 4. 10-12月份为第四季度 create procedure p3(in month int, out quarter varchar(10)) begincase when month 1 and month 3 then set quarter : 第一季度;when month 4 and month 6 then set quarter : 第二季度;when month 7 and month 9 then set quarter : 第三季度;when month 10 and month 12 then set quarter : 第四季度;else set quarter : 非法参数;end case; end;6、循环结构 6.1 while 循环 while 循环是有条件的循环控制语句。满足条件后再执行循环体中的 SQL 语句。 语法 -- 先判定条件如果条件为 true则执行逻辑否则不执行逻辑 while 条件 doSQL 逻辑... end while;案例 -- 计算从 1 累加到 n 的值n 为传入的参数值。 create procedure p4(in n int) begindeclare total int default 0; while n 0 doset total : total n;set n : n - 1;end while;select total; end;6.2 repeat 循环 repeat 是有条件的循环控制语句当满足条件的时候退出循环。 语法 -- 先执行一次逻辑然后判定逻辑是否满足如果满足则退出。如果不满足则继续下一次循环。 -- 注意 until 后面没有结束符 repeat SQL 逻辑... until 条件 end repeat;案例 -- 计算从 1 累加到 n 的值n 为传入的参数值。 create procedure p5(in n int) begindeclare total int default 0;repeatset total : total n;set n : n - 1;until n 0end repeat;select total; end;6.3 loop 循环 loop 实现简单的循环如果不在 SQL 逻辑中增加退出循环条件可以用其来实现简单的死循环。loop 可以配合以下两个语句使用 leave配合循环使用退出循环。功能相当于 breakiterate必须用在循环中作用是跳过当前循环剩下的语句直接进入下一次循环。功能相当于 continue 语法 -- 对于 loop 循环可以设置一个标记。 -- begin_label 就是自定义的标记来标识当前的 loop 循环 [begin_label:] loopSQL 逻辑... end loop [end_label];-- 退出指定标记的循环体 leave label;-- 直接进入下一次循环 iterate label;案例1 -- 计算从 1 累加到 n 的值n 为传入的参数值 create procedure p6(in n int) begindeclare total int default 0;sum:loopif n 0 thenleave sum;end if;set total : total n;set n : n - 1;end loop sum;select total; end;案例2 -- 计算从 1 到 n 之间的偶数累加的值n 为传入的参数值 create procedure p7(in n int) begindeclare total int default 0;sum:loopif n 0 thenleave sum;else if mod(n, 2) 1 thenset n : n - 1;iterate sum;end if;set total : total n;set n : n - 1;end loop sum;select total; end;7、游标 游标cursor是用来存储查询结果集的数据类型在存储过程和函数中可以使用游标对结果集进行循环的处理。游标的使用包括游标的声明、open、fetch、close其语法分别如下。 -- 声明游标 declare 游标名称 cursor for 查询语句;-- 打开游标 open 游标名称;-- 获取游标记录 fetch 游标名称 into 变量 [, 变量];-- 关闭游标 close 游标名称;案例 根据传入的参数 uage来查询用户表 tb_user 中所有的用户年龄小于等于 uage 的用户姓名name和职业job并将用户的姓名和职业插入到所创建的一张新表id, name, job中。 -- 逻辑 -- A. 声明游标存储查询结果集 -- B. 准备创建表结构 -- C. 开启游标 -- D. 获取游标中的记录 -- E. 插入数据到新表中 -- F. 关闭游标create procedure p8(in uage int) begindeclare uname varchar(10); -- 注意需要先声明变量再声明游标declare ujob varchar(10);declare u_cursor cursor for select name, job from user where age uage;drop table if exists user_job;create table if not exists user_job(id int primary auto_increment commit 主键ID,name varchar(10) unique commit 姓名,job varchar(10) commit 职业) commit 用户职业表;open u_cursor;while true dofetch u_cursor into uname, ujob;insert into user_job values(null, uname, ujob);end while; close u_cursor; end;-- 调用存储过程 p8() call p8(40);注意需要先声明变量再声明游标。 上面的代码执行会报错这是因为 while 的条件为 true为死循环而循环体中u_cursor 游标遍历完后就拿不到数据了再向 user_job 表插入数据就会报错。报错信息为 [02000][1329] No data -zero rows fetched, selected, or procedded可以通过条件处理程序解决这个问题。条件处理程序可以用来定义在流程控制结构执行过程中遇到问题时相应的处理步骤。 条件处理程序语法 declare handler_action handler for condition_value [, condition_value]... statement;-- handler_action -- continue: 继续执行当前程序 -- exit终止执行当前程序 -- condition_value -- sqlstate sqlstate_value状态码如02000 -- sqlwarning所有以 01 开头的 sqlstate 代码的简写 -- not found所有以 02 开头的 sqlstate 代码的简写 -- sqlexception所有没有被 sqlwarning 或 not found 捕获的 sqlstate 代码的简写-- condition_value 可以不指定具体的状态码若要捕获所有以 02 开头的状态码可以直接写 not found。完善后的 sql 如下; create procedure p8(in uage int) begin-- 注意需要先声明变量再声明游标declare uname varchar(10); declare ujob varchar(10);declare u_cursor cursor for select name, job from user where age uage;-- 声明条件处理程序-- 指定处理行为是 exit 退出循环-- 指定条件为 sql 状态码为 02000 时触发-- 退出循环后运行的语句为关闭游标 close u_cursor;declare exit handler for sqlstate 02000 close u_cursor;drop table if exists user_job;create table if not exists user_job(id int primary auto_increment commit 主键ID,name varchar(10) unique commit 姓名,job varchar(10) commit 职业) commit 用户职业表;open u_cursor;while true dofetch u_cursor into uname, ujob;insert into user_job values(null, uname, ujob);end while; close u_cursor; end;-- 调用存储过程 p8() call p8(40);
http://www.hkea.cn/news/14459030/

相关文章:

  • 网站建设方案后期服务智慧团建平台登录入口官网
  • 成都企业网站建设及公司pptwin7 建设网站服务器
  • 设计网站怎么做产品免费发布平台
  • 想创建一个网站安徽省工程建设信息网站
  • 河源网站搭建费用500m网站
  • 麻涌网站仿做设计网页的步骤是什么
  • 没有网站可以做搜索引擎营销吗做网站不好做
  • 颍州网站建设建筑师网站
  • wordpress站外搜索公众号如何做微网站
  • 台州网站优化方案微商分销
  • 汽车网站正在建设中模板html5网站建设公司
  • 网站推广软件赚钱难吗?长沙小程序开发
  • 给公司做网站要花多钱唐山哪家网站好
  • 网页升级访问中每天正常更新中系统优化的影响因素
  • iis 多网站网站原创文章优化
  • 铜仁网站优化广告设计案例网站
  • 网站 多语言设计制作中国第一架飞机的人
  • phpcms做装修网站阿里云一键建站网站
  • 公司网站建设流程巴南网站建设哪家好
  • 网站建站建设怎么做马鞍山做网站的公司
  • 用python做网站后端最快多久studio网站开发
  • 梁头网站建设中国建筑集团有限公司官网招标网
  • 什么是网站架构网页设计与制作课程代码
  • 网站开发系统架构图网络体系结构
  • 湖南网站建站系统哪家好网站合作建设方案
  • 集团网站建设特点互联网课堂搜索引擎入口yandex
  • 建设工程信息发布网站大学生毕业设计网页设计
  • 如何做好一个外贸进网站的编辑微网站 微信网站
  • 网站注销重新备案深圳软件开发
  • 网站开发 图片存放怎么设置公司网站