乘风原创程序

  • 数据库中sql存储过程语法格式是怎么样的
  • 2021/1/25 9:43:27
  • sql中可使用“CREATE PROCEDURE”语句来创建存储过程,具体语法格式“CREATE PROCEDURE 过程名 ([过程参数[,…]]) 过程体 [过程参数[,…] ] 格式 [IN | OUT|INOUT] 参数名 类型”。

    MySQL 存储过程是一些 SQL 语句的集合,比如有时候我们可能需要一大串的 SQL 语句,或者说在编写 SQL 语句的过程中需要设置一些变量的值,这个时候我们就完全有必要编写一个存储过程。

    编写存储过程并不是件简单的事情,但是使用存储过程可以简化操作,且减少冗余的操作步骤,同时,还可以减少操作过程中的失误,提高效率,因此应该尽可能的学会使用存储过程。

    下面主要介绍如何创建存储过程。

    可以使用 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 标志。

    示例:

    创建名称为 ShowStuScore 的存储过程,存储过程的作用是从学生成绩信息表中查询学生的成绩信息

    mysql> DELIMITER //
    mysql> CREATE PROCEDURE ShowStuScore()
        -> BEGIN
        -> SELECT * FROM tb_students_score;
        -> END //
    Query OK, 0 rows affected (0.09 sec)

    结果显示 ShowStuScore 存储过程已经创建成功。