一个存储过程包括名字,参数列表,以及可以包括很多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;
另一个带IN和OUT参数的存储过程:
- 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 5.5 中通过测试。我们将用下面的雇员表创建并测试这些储存过程: mysql> select * from employee; +--------+-...
(2)存储过程执行一次后,其执行规划就驻留在高速缓冲存储器,在以后的操作中,只需从高速缓冲存储器中调用已编译好的二进制代码执行,提高了系统性能。 (3)确保数据库的安全。使用存储过程可以完成所有数据库...
SQL语句对单个的MySQL存储过程导出 首先确保参数secure-file-priv='' 表示不限制mysqld在任意目录的导入导出 打开my.cnf或my.ini,加入如下语句后重启mysql服务。 secure_file_priv='' sql语法只修改下面的...
本文实例讲述了mysql存储过程之case语句用法。分享给大家供大家参考,具体如下: 除了if语句,mysql提供了一个替代的条件语句CASE。 mysql的 CASE语句使代码更加可读和高效。废话不多说,我们先来看下简单case语句的...
mysql;mysql基础语法&存储过程示例.pdf
mysql;mysql基础语法&存储过程示例.zip
一、变量的定义 mysql中变量定义用declare来定义...二、mysql存储过程变量赋值 变量的赋值可直接赋值与查询赋值来操作,直接赋值可以用set来操作,可以是常量或表达式如果下 代码如下: set var_name= [,var_name expr]
在此之前,小编给大家讲述过MYSQL语法的基本知识,本篇内容,小编通过下面的一个实例,给读者们通过实战中的代码讲解一下基本语法的知识。 一般情况下MYSQL以;结尾表示确认输入并执行语句,但在存储过程中;不是...
本文实例讲述了mysql存储过程之错误处理。分享给大家供大家参考,具体如下: 当存储过程中发生错误时,重要的是适当处理它,例如:继续或退出当前代码块的执行,并发出有意义的错误消息。其中mysql提供了一种简单的...
16.存储过程 - 创建调用查询删除语法 17.存储过程 - 语法 - 变量 18.存储过程 - 语法 - if判断 19.存储过程 - 语法 - 输入参数 20.存储过程 - 语法 - 输出参数 21.存储过程 - 语法 - case结构 22.存储过程 - 语法 - ...
良好的语法提示与代码格式化及强悍的数据库管理功能。
存储过程如同一门程序设计语言,同样包含了数据类型、流程控制、输入和输出和它自己的函数库。 ——————–基本语法——————– ... (1)不能在一个存储过程中删除另一个存储过程,只能调用另一个存储过
16.MySQL高级存储过程创建调用查询删除语法.avi 17.MySQL高级存储过程语法变量.avi 18.MySQL高级存储过程语法if判断.avi 19.MySQL高级存储过程语法输入参数.avi 20.MySQL高级存储过程语法输出参数.avi 21.MySQL高级...
mysql 5.0存储过程教程,一共59页。 每一语法都会有几个相应的案例。
整篇文章为个人学习心得,之后会持续发表mysql高级进阶,javaweb框架等知识点文章,制作不易,加个关注 存储过程 优点: 提高开发效率,提高应用程序的性能,简化程序开发人员的操作,减少应用程序和是数据库服务器...
详细介绍Mysql存储过程语法,针对初学者非常适合,对存储有个全面的介绍
然后重点讲解了MySQL存储过程的创建、调用、参数、条件和循环语句等知识,同时提供了详细的代码示例进行解释说明,内容系统全面。 适合人群: 需要掌握MySQL高级应用的数据库学习者。文中具体的代码示例可助力开发。 ...
根据自定义模板通过数据库表、视图和存储过程批量生成代码, 模板编辑和代码查看支持语法高亮 (Java, VB, T-SQL) 可以新增语法文件,文件格式类似于 EditPlus 软件附带模板包括: VB 三层结构中实体和...