数据库存储过程MySQL

1.基本语法:

create procedure <过程名> ([过程参数])

           <过程体>([过程参数])

          IN | OUT | INOUT <参数名>([参数类型])

  •  过程名

    存储过程的名称,默认在当前数据库中创建。若需要在特定数据库中创建存储过程,则要在名称前面加上数据库的名称,即 db_name.sp_name。注:名称应当尽量避免选取与 MySQL 内置函数相同的名称,否则会发生错误。
  •  过程参数
    当有多个参数时,参数列表中彼此间用逗号分隔。存储过程可以没有参数(此时存储过程的名称后仍需加上一对括号)
    MySQL 存储过程支持三种类型的参数:输入参数IN、输出参数OUT和输入/输出参数INOUT,输入参数可以传递给一个存储过程,输出参数用于存储过程需要返回一个操作结果的情形,而输入/输出参数既可以充当输入参数也可以充当输出参数。需要注意的是,参数的取名不要与数据表的列名相同,否则尽管不会返回出错信息,但是存储过程的 SQL 语句会将参数名看作列名,从而引发不可预知的结果。
  •  过程体
    存储过程的主体部分,也称为存储过程体,包含在过程调用的时候必须执行的 SQL 语句。这个部分以关键字 BEGIN 开始,以关键字 END 结束。若存储过程体中只有一条 SQL 语句,则可以省略 BEGIN-END 标志。

    在存储过程的创建中,经常会用到一个十分重要的 MySQL 命令,即 DELIMITER 命令,特别是对于通过命令行的方式来操作 MySQL 数据库的使用者,更是要学会使用该命令。
  •  命令行格式:delimiter<符号>   以<符号>结束语句

符号要避免与转义字符重合,多用$$、??等代替。

2.创建无参存储过程

CREATE PROCEDURE ShowStuScore()
  BEGIN
    SELECT * FROM <表名>;
  END;

   调用:CALL ShowStuScore();

3.有参存储过程的创建

CREATE PROCEDURE GetStuId
    (IN name VARCHAR(30))
    BEGIN
      SELECT stuId FROM stu
      WHERE stuName=name;
    END;

调用:call GetStuId("Bob");

4.修改存储过程

网上几乎都建议删除重建,23333,好像也是,这个不会破坏表的结构。

5.删除存储过程

存储过程被创建后,保存在数据库服务器上,直至被删除。可以使用 DROP PROCEDURE 语句删除数据库中已创建的存储过程。

DROP { PROCEDURE | FUNCTION } [ IF EXISTS ] <过程名>

1) 过程名

指定要删除的存储过程的名称。

2) IF EXISTS

指定这个关键字,用于防止因删除不存在的存储过程而引发的错误。

注意:存储过程名称后面没有参数列表,也没有括号,在删除之前,必须确认该存储过程没有任何依赖关系,否则会导致其他与之关联的存储过程无法运行。

本文总结于

猜你喜欢

转载自blog.csdn.net/Tumbler_Zeng/article/details/99602986