`
tykon
  • 浏览: 4114 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

mysql存储过程语法学习

阅读更多

 

mysql存储过程语法学习

简介:一个存储过程包括名字,参数列表,以及可以包括很多SQL语句的SQL语句集。

一个存储过程包括名字,参数列表,以及可以包括很多SQL语句的SQL语句集。

创建存储过程:

语法:

CREATE PROCEDURE p()

 BEGIN

 /*此存储过程的正文*/

 END

CREATE PROCEDURE productpricing()

 BEGIN

   SELECT Avg(pro_price) AS priceaverage

   FROM products;

 END;

# begin…end之间是存储过程的主体定义

# mysql的分界符是分号(;)

                        

调用存储过程的方法是:

# CALL加上过程名以及一个括号

例如调用上面定义的存储过程

CALL productpricing();

哪怕是不用传递参数,存储过程名字后面的括号“()”也是必须的

删除存储过程的方法是:

DROP PROCUDURE productpricing;

创建带参数的存储过程:

CREATE PROCUDURE productpricing(

OUT p1 DECIMAL(8,2),

OUT ph DECIMAL(8,2),

OUT pa DECIMAL(8,2)

)

BEGIN

SELECT Min(prod_price) INTO pl FROM products;

SELECT Max(prod_price) INTO ph FROM products;        

SELECT Avg(prod_price) INTO pa FROM products;

END;

# DECIMAL用于指定参数的数据类型

# OUT用于表明此值是用于从存储过程里输出的

# MySQL支持 OUT, IN, INOUT

调用带参数的存储过程:

CALL productpricing(@pricelow,

                    @pricehigh,

                    @priceaverage); 

所有的参数必须以@开头

要想获取@priceaverage的值,用以下语句

SELECT @priceaverage;

获取三个的值,用以下语句

SELECT @pricehigh, @pricelow, @priceaverage;

另一个带INOUT参数的存储过程:

CREATE PROCEDURE ordertotal(

   IN onumber INT,

   OUT ototal DECIMAL(8,2)

)

BEGIN

   SELECT Sum(item_price*quantity)

   FROM orderitems

   WHERE order_num = onumber

   INTO ototal;

END;

CALL ordertotal(20005, @total);

SELECT @total;

 添加一个完整的例子:(这是一个自定义分页的存储过程)

DELIMITER $$

DROP PROCEDURE IF EXISTS `dbcall`.`get_page`$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `get_page`(
    /**//*Table name*/
    tableName varchar(100),
    /**//*Fileds to display*/
    fieldsNames varchar(100),
    /**//*Page index*/
    pageIndex int,
    /**//*Page Size*/
    pageSize int,  
    /**//*Field to sort*/
    sortName varchar(500),
    /**//*Condition*/
    strWhere varchar(500)
  )
BEGIN  
    DECLARE fieldlist varchar(200);  
    if fieldsNames=''||fieldsNames=null THEN
        set fieldlist='*';
    else
        set fieldlist=fieldsNames;  
    end if;

    if strWhere=''||strWhere=null then
        if sortName=''||sortName=null then  
            set @strSQL=concat('SELECT ',fieldlist,' FROM ',tableName,' LIMIT ',(pageIndex-1)*pageSize,',',pageSize);
        else
            set @strSQL=concat('SELECT ',fieldlist,' FROM ',tableName,' ORDER BY ',sortName,' LIMIT ',(pageIndex-1)*pageSize,',',pageSize);  
        end if;
    else
        if sortName=''||sortName=null then
            set @strSQL=concat('SELECT ',fieldlist,' FROM ',tableName,' WHERE ',strWhere,' LIMIT ',(pageIndex-1)*pageSize,',',pageSize);
        else
            set @strSQL=concat('SELECT ',fieldlist,' FROM ',tableName,' WHERE ',strWhere,' ORDER BY ',sortName,' LIMIT ',(pageIndex-1)*pageSize,',',pageSize);  
        end   if;
    end   if;  
    PREPARE stmt1 FROM @strSQL;  
    EXECUTE stmt1;
    DEALLOCATE PREPARE stmt1;
END$$

DELIMITER ;

 

分享到:
评论

相关推荐

    mysql存储过程教程

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

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

    总的来说,通过学习“mysql经典教程+mysql存储过程讲解”,你不仅可以掌握MySQL的基础操作,还能深入了解如何利用存储过程、触发器和游标来实现更复杂的数据管理策略。这将有助于你成为一名更高效的数据库管理员或...

    MySQL存储过程学习资料

    学习MySQL存储过程,你需要掌握以下关键概念和语法: 1. **创建存储过程**:使用`CREATE PROCEDURE`语句定义存储过程,包括参数定义、SQL语句和流程控制结构。 2. **调用存储过程**:使用`CALL`语句来执行存储过程...

    MySQL存储过程入门学习

    ### MySQL存储过程入门学习 #### 一、存储过程概述 **存储过程**(Stored Procedure)是一种在数据库中存储的预先编写并编译好的SQL程序或函数集合。存储过程的主要优势在于可以提高应用程序的性能和响应速度,同时...

    MySQL存储过程.rar

    "下载说明.txt"可能包含关于如何正确获取和使用这份教程的指导,而"A5下载- 更全的站长资源平台.url"则是一个链接,指向一个提供更多相关资源的网站,对于学习和深化MySQL存储过程的理解非常有帮助。 总的来说,...

    mysql存储过程实例

    创建存储过程的语法如下: ```sql create procedure proc_name (in parameter integer) begin declare variable varchar(20); if parameter=1 then set variable='MySQL'; else set variable='PHP'; end if; ...

    MySQL存储过程编程教程.pdf

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

    mysql存储过程、触发器.pdf

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

    MYSQL存储过程教程

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

    mysql存储过程调试工具

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

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

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

    存储过程文档--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存储过程和函数 #### 1. 说明 ##### 1.1 手册适用范围 本手册适用于对MySQL存储过程...通过这些知识点的学习,可以帮助开发者更好地理解和应用MySQL存储过程和函数,从而提高应用程序的性能和安全性。

    Mysql存储过程和函数

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

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

    这个电子书显然专注于探讨MySQL存储过程的各个方面,为学习者提供了一个深入理解、创建和使用存储过程的资源。在本文中,我们将详细探讨存储过程的概念、优势、创建方法以及如何在实际应用中使用它们。 首先,存储...

Global site tag (gtag.js) - Google Analytics