您的位置:

mysql存储过程调试学习总结,mysql存储过程调试打印

本文目录一览:

mysql 存储过程

一个存储过程包括名字,参数列表,以及可以包括很多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 存储过程总结(一)

1、存储过程定义:

存储过程是事先经过编译并存储在数据库中的一段 SQL 语句的集合,调用存储过程可以简化应用开发 人员的很多工作,减少数据在数据库和应用服务器之间的传输,对于提高数据处理的效率是有好处的。 存储过程思想上很简单,就是数据库 SQL 语言层面的代码封装与重用。

2、特点:

封装,复用 : 可以把某一业务SQL封装在存储过程中,需要用到 的时候直接调用即可。

可以接收参数,也可以返回数据 :再存储过程中,可以传递参数,也可以接收返回 值。

减少网络交互,效率提升 : 如果涉及到多条SQL,每执行一次都是一次网络传 输。 而如果封装在存储过程中,我们只需要网络交互一次可能就可以了。

3、基本语法

(1)创建:

(2)调用:

(3)查看:

(4)删除

注意: 在命令行中,执行创建存储过程的SQL时,需要通过关键字 delimiter 指定SQL语句的 结束符。

MYSQL存储过程即常用逻辑知识点总结

Mysql存储过程

1.创建存储过程语法(格式)

解析:

2.存储过程内具体语法与逻辑

A.定义变量语法:

注:可以在参数类型后面加 DEFAULT NULL; 来设置初始值。

B.变量赋值:

方式1(直接对变量进行赋值):

方式2(sql查询的结果直接赋值给变量):

方式3(sql查询的结果直接赋值给多个变量):

c.逻辑判断:

D.游标,(LOOP)循环:

3.存储过程的调用

4.删除存储过程

5.注意事项

存储过程中的分号(;)很重要,尽量不要省略。

mysql存储过程

MySQL存储过程创建的格式如下:

CREATE PROCEDURE 过程名 ([过程参数[,...]])[特性 ...] 过程体

举例代码如下:

CREATE PROCEDURE proc1(OUT s int) BEGIN SELECT COUNT(*) INTO s FROM user; END

存储过程根据需要可能会有输入、输出、输入输出参数,这里有一个输出参数s,类型是int型,如果有多个参数用","分割开。

过程体的开始与结束使用BEGIN与END进行标识。

注意:MySQL在5.0以前并不支持存储过程

mysql怎么调试存储过程

mysql调试存储过程具体方法:

在你的存储过程中加入如下语句:

SELECT

变量1,变量2;

然后用mysql自带的cmd程序进入mysql

下。

call

你的存储过程名(输入参数1,@输出参数);(注:这里帮助下新同学,如果你的存储过程有输出变量,那么在这里只需要加

@

然后跟任意变量名即可);

即可发现你的变量值被打印到了cmd下