存储过程 向右看齐 2022-05-23 05:07 115阅读 0赞 * 一、创建存储过程和函数 * 1.创建存储过程 * 2.创建存储函数 * 3.变量 * I 局部变量 * II 用户变量 * III 会话变量 * 光标 * 5.流程控制 * 二、 调用存储过程和函数 * 三、查看存储过程和函数 * 四、删除存储过程和函数 # 一、创建存储过程和函数 # 存储过程可以分为存储过程和存储函数,MySQL中创建存储过程和函数使用的语句分别是:CREATE PROCEDURE和CREATE FUNCTION。使用CALL语句来调用存储过程,只能用输出变量返回值,函数可以从语句外调用(既通过引用函数名),亚俄能返回标量值,存储过程可以调用其他存储过程。 ## 1.创建存储过程 ## * 创建存储过程,使用CREATE PROCEDURE语句,基本语法格式如下: create procedure sp_name([proc_parameter]) BEGIN routine_body END * proc\_parameter:为指定存储过程的列表参数,列表的形式为:`[IN|OUT|INOUT] param_name type` * 如果需要为输出参数赋值使用INTO关键字,·seletct column into para where condition;· ## 2.创建存储函数 ## * 创建存储函数,需要使用CREATE FUNCTION 语句,基本语句格式如下: create function f_name([proc_parameter]) returns type routine body * **注意**:指定参数为IN、OUT 或INOUT只对PROCEDURE是合法的,FUNCTION种总是默认IN参数。RETURNS子句只对FUNCTION做指定,对函数而言这是强制的,它用来指定函数的返回值,而且函数体必须包含一个RETURN value语句。 ## 3.变量 ## ### I 局部变量 ### * 局部变量一般用在sql语句块中,比如存储过程的begin/end。其作用域仅限于该语句块,在该语句块执行完毕后,局部变量就消失了。 * 定义变量:在存储过程中使用DECLARE语句定义变量,语法格式为`declare var_name,... data_type [default value];` * 变量赋值:MySQL使用SET语句为变量赋值,语法格式为`set var_name = expr,...;` * MySQL中还可以通过SELECT…INTO为一个或多个变量赋值,语法格式为`select col_name,... into var_name,... table_expr;` ### II 用户变量 ### * 用户变量的作用域要比局部变量要广。用户变量可以作用于当前整个连接,但是当当前连接断开后,其所定义的用户变量都会消失。 * 用户变量使用如下(这里我们无须使用declare关键字进行定义,可以直接这样使用):`select @变量名` * 对用户变量赋值有两种方式,一种是直接用”=”号,另一种是用”:=”号。其区别在于使用set命令对用户变量进行赋值时,两种方式都可以使用;当使用select语句对用户变量进行赋值时,只能使用”:=”方式,因为在select语句中,”=”号被看作是比较操作符。 ### III 会话变量 ### * 服务器为每个连接的客户端维护一系列会话变量。在客户端连接时,使用相应全局变量的当前值对客户端的会话变量进行初始化。设置会话变量不需要特殊权限,但客户端只能更改自己的会话变量,而不能更改其它客户端的会话变量。会话变量的作用域与用户变量一样,仅限于当前连接。当当前连接断开后,其设置的所有会话变量均失效。 * 设置会话变量有如下三种方式: * set session var\_name = value; * set @@session.var\_name = value; * set var\_name = value; * 查看一个会话变量也有如下方式 * select @@var\_name; * select @@session.var\_name; ## 光标 ## 查询语句可能返回多条记录,如果数据量非常大,需要在存储过程中和存储函数中使用光标来逐条读取查询结果集中的记录,应用程序可以根据需要滚动或浏览其中的数据,需要注意的是,光标必须在声明处理程序之前被声明,并且变量和条件还必须在声明光标或处理程序之前被声明。 * 声明光标:MySQL中使用DECLARE关键字来声明光标,其语法格式为`declare cursor_name cursor for select_statement;` * 打开光标:`open cursor_name;` * 使用光标:`fetch cuesor_name into val_name [,...];` * 关闭光标:`close cursor_name;` * **注意:** MySQL中光标只能在存储过程和函数中使用 ## 5.流程控制 ## * IF语句 if expr_condition then statement_list; elseif expr_condition then statement_list; else statement_list; end if; * CASE语句 case when expr_condition then statement_list; ... else statement_list; end case; * LOOP语句 [loop_label:] loop statement_list; end loop [loop_label]; * LEVAE语句:类似break用于跳出循环 leave label; * ITERATE语句,类似jump,跳转到语句开头 iterate label; * REPEAT语句:类似do while [repeat_label:] repeat statement_list; until expr_condition end repeat [repeat_lable]; * WHILE语句: [while_label:] while expr_condition do statement_list; end while [while_lable]; # 二、 调用存储过程和函数 # 存储过程必须使用CALL语句调用,并且存储过程和数据库相关,如果要执行其他数据库中的存储过程,需要指定数据库名称,例如CALL dbname.procname。存储函数的调用与MySQL中预定义的函数的调用方式相同。 # 三、查看存储过程和函数 # * 使用SHOW STATUS语句查看存储过程和函数的状态:`show {procedure|function} status [like 'pattern'];` * 使用SHOW CREATE语句查看存储过程和函数的定义:`show create {procedure|function} sp_name;` * 从information\_schema.Routines表中查看存储过程和函数的信息。 # 四、删除存储过程和函数 # * 删除使用DROP语句:`drop {procedure|function} [if exists] sp_name;`
相关 存储过程 什么是存储过程? 存储过程是由T-sql语句组成,通过这个语句实现一个功能并且给这个语句起个名字,待用到此功能的时候调用这个名字即可。 存储过程的好处: 1.数据库 ╰半夏微凉°/ 2022年07月13日 10:50/ 0 赞/ 180 阅读
相关 存储过程 MySQL的存储过程(procedure),也叫存储程序。它是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中。可以通过存储过程的名称对其进行调用。 存储过程跟触发 浅浅的花香味﹌/ 2022年05月30日 02:09/ 0 赞/ 209 阅读
相关 存储过程一 存储过程介绍 存储过程是由流控制和SQL语句书写的过程,这个过程经编译和优化 后存储在数据库服务器中,使用时只要调用即可。在ORACLE中,若干个 有联系的过程可以组合在一起构成程序 川长思鸟来/ 2022年05月26日 03:13/ 0 赞/ 238 阅读
相关 存储过程 存储过程 文前话: 内心一场金戈铁马 -------------------- 定义: 1.存储过程(Stored Procedure)是在大型数 ﹏ヽ暗。殇╰゛Y/ 2022年05月09日 00:24/ 0 赞/ 222 阅读
相关 存储过程 dbms\_output.put\_line : 用于打印信息 create or replace PROCEDURE ALLJOB AS 用于创建存储过程 ,名称 港控/mmm°/ 2022年04月23日 05:20/ 0 赞/ 237 阅读
相关 存储过程 1、建立存储过程完成图书管理系统中的借书功能。 功能要求: l 借书时要求输入借阅流水号,借书证号,图书编号。(即该存储 淩亂°似流年/ 2022年04月22日 06:16/ 0 赞/ 340 阅读
相关 存储过程 Transact-SQL中的存储过程,非常类似于Java语言中的方法,它可以重复调用。当存储过程执行一次后,可以将语句缓存中,这样下次执行的时候直接使用缓存中的语句。这样就可以 ゞ 浴缸里的玫瑰/ 2022年01月22日 03:29/ 0 赞/ 266 阅读
相关 存储过程 1. 存储过程的类型: (1) 用户自定义存储过程 自定义存储过程即用户使用T\_SQL语句编写的、为了实现某一特定业务需求,在用户数据库 旧城等待,/ 2021年11月04日 22:12/ 0 赞/ 455 阅读
相关 存储过程 存储过程在我们后端开发很常用,我们经常在开发过程中需要写存储过程,其实存储过程没啥难的,就是一个固定的格式,最难的在于存储过程中我们要写的逻辑,业务方面的东西,这些就需要我们对 柔光的暖阳◎/ 2021年11月01日 23:20/ 0 赞/ 407 阅读
还没有评论,来说两句吧...