`
wwty
  • 浏览: 542479 次
  • 性别: Icon_minigender_1
  • 来自: 北京-郑州
社区版块
存档分类
最新评论

mysql存储过程之基本语法篇

阅读更多

基本语法的学习主要参考了mysql用户指南

 

存储程序需要在mysql数据库中有proc表。这个表在MySQL 5.1安装过程中创建。如果你从早期的版本升级到MySQL 5.1 ,请确定更新你的授权表以确保proc表的存在。(mysql数据库安装完毕,在mysql库里面有一个proc表)

 

创建mysql存储过程的权限问题

.创建存储子程序需要CREATE ROUTINE权限。
·提醒或移除存储子程序需要ALTER ROUTINE权限。这个权限自动授予子程序的创建者。
·执行子程序需要EXECUTE权限。然而,这个权限自动授予 子程序的创建者。同样,子程序默认的SQL SECURITY 特征是DEFINER,它允许用该子程序访问数据库的用户与执行子程序联系到一起。

 

存储程序和函数是用CREATE PROCEDURE和CREATE FUNCTION语句创建的子程序。当前只学习CREATE PROCEDURE

 

在MySQL 5.1中,一个存储子程序或函数与特定的数据库相联系。这里有几个意思:
·当一个子程序被调用时,一个隐含的USEdb_name被执行(当子程序终止时停止执行)。存储子程序内的USE语句时不允许的。
·你可以使用数据库名限定子程序名。这可以被用来引用一个不在当前数据库中的子程序。比如,要引用一个与test数据库关联的存储程序p或函数f,你可以说CALL test.p()或test.f()。
·数据库移除的时候,与它关联的所有存储子程序也都被移除。

 

CREATE PROCEDURE基本语法
CREATE PROCEDURE sp_name ([proc_parameter[,...]])
 [characteristic ...] routine_body


characteristic:
 LANGUAGE SQL
 | [NOT] DETERMINISTIC
 | { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
 | SQL SECURITY { DEFINER | INVOKER }
 | COMMENT 'string'

 

routine_body:
 Valid SQL procedure statement or statements

 

注意: 指定参数为IN, OUT, 或INOUT 只对PROCEDURE是合法的。(FUNCTION参数总是被认为是IN参数)

 

BEGIN ... END复合语句
[begin_label:] BEGIN
 [statement_list]
END [end_label]

存储子程序可以使用BEGIN ... END复合语句来包含多个语句。statement_list代表一个或多个语句的列表。statement_list之内每个语句都必须用分号(;)来结尾。
除非begin_label存在,否则end_label不能被给出,并且如果二者都存在。

 

存储程序中的变量
1、DECLARE局部变量
2、变量SET语句
3、SELECT ... INTO语句

1.1 DECLARE var_name[,...] type [DEFAULT value]
这个语句被用来声明局部变量。要给变量提供一个默认值,请包含一个DEFAULT子句。值可以被指定为一个表达式,不需要为一个常数。如果没有DEFAULT子句,初始值为NULL。
局部变量的作用范围在它被声明的BEGIN ... END块内。它可以被用在嵌套的块中,除了那些用相同名字 声明变量的块。

 

2.1 变量SET语句
SET var_name = expr [, var_name = expr] ...

 

3.1 SELECT ... INTO语句
SELECT col_name[,...] INTO var_name[,...] table_expr
这个SELECT语法把选定的列直接存储到变量。因此,只有单一的行可以被取回。
SELECT id,data INTO x,y FROM test.t1 LIMIT 1;
注意,用户变量名在MySQL 5.1中是对大小写不敏感的。

重要: SQL变量名不能和列名一样。如果SELECT ... INTO这样的SQL语句包含一个对列的参考,并包含一个与列相同名字的 局部变量,MySQL当前把参考解释为一个变量的名字。例如,在下面的语句中,xname 被解释为到xnamevariable的参考而不是到xnamecolumn的:
CREATE PROCEDURE sp1 (x VARCHAR(5))
 BEGIN
 DECLARE xname VARCHAR(5) DEFAULT 'bob';
 DECLARE newname VARCHAR(5);
 DECLARE xid INT;
 
SELECT xname,id INTO newname,xid
FROM table1 WHERE xname = xname;
 SELECT newname;
 END;
当这个程序被调用的时候,无论table.xname列的值是什么,变量newname将返回值‘bob’。

分享到:
评论

相关推荐

    mysql存储过程教程

    MySQL存储过程是数据库管理系统中的一种重要功能,它允许开发者预编译一系列SQL语句并封装成一个可重复使用的单元,从而提高数据处理的效率和代码的复用性。本教程将深入探讨MySQL存储过程的创建、调用以及相关概念...

    mysql经典教程+mysql存储过程讲解

    本教程结合"mysql经典教程+mysql存储过程讲解"的主题,将深入探讨MySQL的基础知识以及核心特性——存储过程。 首先,我们需要理解什么是数据库。数据库是一个组织和存储数据的系统,允许用户以结构化方式访问和管理...

    MySQL存储过程.rar

    在提供的压缩包文件中,"MySQL存储过程.pdf"很可能是一份详细讲解MySQL存储过程的教程,涵盖了从基础概念到高级用法的全方位介绍。"下载说明.txt"可能包含关于如何正确获取和使用这份教程的指导,而"A5下载- 更全的...

    mysql存储过程实例

    存储过程的创建是 MySQL 存储过程的基础,MySQL 5.0 以后的版本开始支持存储过程。一个存储过程包括名字、参数列表,以及可以包括很多 SQL 语句的 SQL 语句集。创建存储过程的语法如下: ```sql create procedure ...

    mysql存储过程、触发器.pdf

    MySQL 存储过程和触发器详解 MySQL 存储过程是指一组为了完成特定功能的 SQL 语句集合。存储过程的优点包括: 1. 封装性:存储过程可以将多个 SQL 语句封装在一起,方便调用和维护。 2. 可增强 SQL 语句的功能和...

    MySQL存储过程编程教程.pdf

    1. MySQL存储过程编程基础:熟悉存储过程的基本概念、语法结构、如何创建存储过程以及存储过程中常见的SQL语句使用和错误处理机制。 2. 创建存储过程程序:掌握事务处理的方法,了解MySQL内建函数的使用,学习如何...

    存储过程文档--mysql

    创建存储过程的基本语法 Create procedure procedue_name [@parameter data_type][output] [with]{recompile|encryption} as sql_statement 实例 1: 查询表 Book 的内容的存储过程 Create proc query_book as ...

    MYSQL存储过程教程

    MySQL存储过程是数据库管理系统中的一种重要功能,它允许开发者预定义一组SQL语句,并将其封装成一个可重复使用的单元。这个教程将深入讲解如何在MySQL中创建、调用和管理存储过程,以及它们在实际应用中的价值。 ...

    mysql存储过程调试工具

    MySQL存储过程调试是数据库开发中的重要环节,它能帮助开发者检查和优化代码,确保存储过程的正确性和效率。本文将详细介绍MySQL存储过程调试工具的使用,以及如何在不同版本的MySQL中进行有效调试。 首先,MySQL...

    玩转MySQL存储过程

    创建MySQL存储过程的基本格式如下: ```sql CREATE PROCEDURE 过程名([过程参数[, ...]]) [特性] 过程体 ``` **2. 参数类型** MySQL存储过程支持三种类型的参数: - **IN 输入参数**:调用时必须提供值,过程中...

    mysql中文手册+mysql命令大全+mysql存储过程

    最后,"mysql存储过程.pdf"专注于MySQL的存储过程。存储过程是预编译的SQL语句集合,可以提高数据库操作的性能,减少网络流量,并增强数据安全。在PDF文档中,你将学习如何定义、调用和管理存储过程,以及如何使用...

    精通MySQL存储过程和函数

    以上内容概述了MySQL存储过程和函数的基本概念、创建方法、变量定义、条件处理、流程控制、游标使用、预处理语句以及常见问题。通过这些知识点的学习,可以帮助开发者更好地理解和应用MySQL存储过程和函数,从而提高...

    Mysql存储过程和函数

    ### MySQL存储过程与函数详解 #### 一、概述 MySQL是一种广泛使用的开源关系型数据库管理系统,在数据管理和存储方面提供了强大的支持。其中,存储过程和函数是MySQL提供的两种重要的编程特性,它们可以帮助开发者...

    mysql存储过程电子书,可以参考

    MySQL存储过程是数据库管理系统中的一种重要功能,它允许开发者预定义一组SQL语句,并将其封装成一个可重复使用的单元。这个电子书显然专注于探讨MySQL存储过程的各个方面,为学习者提供了一个深入理解、创建和使用...

    mysql存储过程简单应用编写

    在本篇总结文档中,我们将探讨MySQL存储过程的简单应用,包括循环结构、创建临时表、删除数据、分页查询以及动态存储过程的编写。 首先,让我们了解一下什么是存储过程。存储过程是一组为了完成特定功能的SQL语句集...

    mysql存储过程

    本篇文章将深入探讨MySQL存储过程的基础知识、创建与调用方法,以及实际应用中的最佳实践。 一、存储过程的概念与优点 存储过程是由一个或多个SQL语句组成的代码块,存储在数据库服务器中,可以被多次调用执行。它...

Global site tag (gtag.js) - Google Analytics