首页 > 数据库 >MySQL存储过程

MySQL存储过程

时间:2022-11-29 19:46:03浏览次数:45  
标签:语句 存储 MySQL 参数 SQL 过程

 

1.存储过程的语法

可以使用 CREATE PROCEDURE 语句创建存储过程,语法格式如下:

CREATE PROCEDURE <过程名> ( [过程参数[,…] ] ) <过程体>
[过程参数[,…] ] 格式
[ IN | OUT | INOUT ] <参数名> <类型>

语法说明如下:

1) 过程名

存储过程的名称,默认在当前数据库中创建。若需要在特定数据库中创建存储过程,则要在名称前面加上数据库的名称,即 db_name.sp_name。
需要注意的是,名称应当尽量避免选取与 MySQL 内置函数相同的名称,否则会发生错误。

2) 过程参数

存储过程的参数列表。其中,<参数名>为参数名,<类型>为参数的类型(可以是任何有效的 MySQL 数据类型)。当有多个参数时,参数列表中彼此间用逗号分隔。存储过程可以没有参数(此时存储过程的名称后仍需加上一对括号),也可以有 1 个或多个参数。
MySQL 存储过程支持三种类型的参数,即输入参数、输出参数和输入/输出参数,分别用 IN、OUT 和 INOUT 三个关键字标识。其中,输入参数可以传递给一个存储过程,输出参数用于存储过程需要返回一个操作结果的情形,而输入/输出参数既可以充当输入参数也可以充当输出参数。
需要注意的是,参数的取名不要与数据表的列名相同,否则尽管不会返回出错信息,但是存储过程的 SQL 语句会将参数名看作列名,从而引发不可预知的结果。

3) 过程体

存储过程的主体部分,也称为存储过程体,包含在过程调用的时候必须执行的 SQL 语句。这个部分以关键字 BEGIN 开始,以关键字 END 结束。若存储过程体中只有一条 SQL 语句,则可以省略 BEGIN-END 标志。
在存储过程的创建中,经常会用到一个十分重要的 MySQL 命令,即 DELIMITER 命令,特别是对于通过命令行的方式来操作 MySQL 数据库的使用者,更是要学会使用该命令。
在 MySQL 中,服务器处理 SQL 语句默认是以分号作为语句结束标志的。然而,在创建存储过程时,存储过程体可能包含有多条 SQL 语句,这些 SQL 语句如果仍以分号作为语句结束符,那么 MySQL 服务器在处理时会以遇到的第一条 SQL 语句结尾处的分号作为整个程序的结束符,而不再去处理存储过程体中后面的 SQL 语句,这样显然不行。
为解决以上问题,通常使用 DELIMITER 命令将结束命令修改为其他字符。语法格式如下:

DELIMITER $$

语法说明如下:

    • $$ 是用户定义的结束符,通常这个符号可以是一些特殊的符号,如两个“?”或两个“¥”等。
    • 当使用 DELIMITER 命令时,应该避免使用反斜杠“\”字符,因为它是 MySQL 的转义字符。

注意:DELIMITER 和分号“;”之间一定要有一个空格。在创建存储过程时,必须具有 CREATE ROUTINE 权限。

例1:创建一个名为ShowStu的存储过程,查询student表的内容。

delimiter // 
create PROCEDURE ShowStu()
begin
select * from student;
end//
delimiter ;

例2:创建一个名为GetScoreByStu的存储过程,用于查询指定姓名的学生信息。

delimiter // 
create PROCEDURE GetScoreByStu(in name varchar(50))
begin
select * from student where stuName=name;
end//
delimiter ;

 

标签:语句,存储,MySQL,参数,SQL,过程
From: https://www.cnblogs.com/YorkZhangYang/p/16936482.html

相关文章

  • MySQL高级SQL语句
    先准备2个表一个location表:usekk;createtablelocation(Regionchar(20),Store_Namechar(20));insertintolocationvalues('East','Boston');insertintolo......
  • 数据库MySQL(完结)
    SQL注入问题简介针对SQL注入的攻击行为可描述为通过用户可控参数中注入SQL语法,破坏原有SQL结构,达到编写程序意料之外结果的攻击行为。其成因可归结为以下两个原理叠加......
  • MySQL补充概念
    MySQL补充概念本篇补充一些sql语句的一些概念,包括视图、触发器、事务、存储过程、函数、流程控制、索引概念及结构、慢查询优化。。。视图视图是将一条查询sql语句的表......
  • python之路38 SQL注入问题 索引触发器 事务 存储过程 函数 流程控制
    SQL注入问题怪像1:输对用户名就可以登录成功怪像2:不需要对的用户名和密码也可以登录成功SQL注入:利用特殊符号的组合产生特殊的含义从而避开正常的业务逻辑select......
  • MYSQL高阶语句一
    一、常用查询(增、删、改、查)对MySQL数据库的查询,除了基本的查询外,有时间需要对查询结果集进行处理。列如只取10条数据、对查询结果进行排序或分组等等。二、高级SQL语句......
  • MySQL数据查询(二)
    SQL注入问题视图触发器存储过程流程控制内置函数索引与慢查询优化今日内容详细使用pysql进行用户登录importpymysqlconn=pymysql.connect(host='127.......
  • SQL注入问题、视图、触发器、事务、存储过程、函数、函数、索引相关概念、索引数据结
    目录SQL注入问题视图触发器事务存储过程函数函数索引相关概念索引数据结构慢查询优化测试索引联合索引全文检索插入数据更新数据删除数据主键外键重命名表事务安全管理隔离......
  • 找不到过程“onModelChange3dc”。
    importpymel.coreaspm#获取Maya中的所有模型编辑器并重置编辑器更改事件foriteminpm.lsUI(editors=True):ifisinstance(item,pm.ui.ModelEditor):......
  • MySQL高级SQL语句(上)
    一、SQL高级语句1、SELECT显示表格中一个或数个栏位的所有资料语法:SELECT"字段"FROM"表名";2、ORDERBY按关键字排序语法:SELECT"字段"FROM"表名"[WHERE"条......
  • Mysql 常用方法
    删除重复数据(根据url删除重复数据)DELETEFROM`BaiDu_know_new_copy1`WHERE`user_url`IN(SELECTxFROM(SELECT`user_url`ASxFROM`BaiDu_k......