mysql储存过程入门_Mysql存储过程入门知识

Mysql存储过程入门知识

#1,查看数据库所有的存储过程名

#--这个语句被用来移除一个存储程序。不能在一个存储过程中删除另一个存储过程,只能调用另一个存储过程

#SELECT NAME FROM mysql.proc WHERE db='数据库名';

#2,列出所有的存储过程

#SHOW PROCEDURE STATUS;

#3,查看存储过程详细

#SHOW CREATE PROCEDURE 数据库名.存储过程名;

#4,存储过程的创建 由括号包围的参数列必须总是存在。如果没有参数,也该使用一个空参数列()。

#每个参数默认都是一个IN参数。要指定为其它参数,可在参数名之前使用关键词 OUT或INOUT

#CREATE PROCEDURE存储过程名 (参数列表); 使用BEGIN ... END复合语句来包含多个语句

# BEGIN

# SQL语句代码块

# END

#5,DECLARE语句(用来声明局部变量);

#要给变量提供一个默认值,需包含一个DEFAULT子句。如果没有DEFAULT子句,初始值为NULL。局部变量的作用范围在它被声明的BEGIN ... END块内。

#DECLARE var_name[,...] type [DEFAULT value]

#6,变量SET语句

#SET var_name = expr [, var_name = expr]

#7,SELECT ... INTO语句;这个SELECT语法把选定的列直接存储到变量,因此,只有单一的行可以被取回。

#SELECT col_name[,...] INTO var_name[,...] table_expr

#8,修改存储过程

#ALTER PROCEDURE 存储过程名SQL语句代码块;

#9,删除存储过程

#DROP PROCEDURE IF EXISTS 存储过程名;

#存储过程的调用;存储过程名称后面必须加括号,哪怕该存储过程没有参数传递。

#10,CALL 存储过程名(参数列表);

#11,MySQL 存储过程参数(in;)

#跟 C 语言的函数参数的值传递类似, MySQL 存储过程内部可能会修改此参数,但对 in 类型参数的修改,对调用者(caller)来说是不可见的(not visible)。

#12,MySQL 存储过程参数(out)

#MySQL 存储过程 “out” 参数:从存储过程内部传值给调用者。在存储过程内部,该参数初始值为 null,无论调用者是否给存储过程参数设置值

#13,MySQL 存储过程参数(inout)

#MySQL 存储过程 inout 参数跟 out 类似,都可以从存储过程内部传值给调用者。不同的是:调用者还可以通过 inout 参数传递值给存储过程。

#注:如果仅仅想把数据传给 MySQL 存储过程,那就使用“in” 类型参数;

# 如果仅仅从 MySQL 存储过程返回值,那就使用“out” 类型参数;

# 如果需要把数据传给 MySQL 存储过程,还要经过一些计算后再传回给我们,此时,要使用“inout” 类型参数。

#demo1:创建一个简单的存储过程(获取用户总数),带输出参数。

#--删除存储过程

DROP PROCEDURE IF EXISTS proc_users_getCount

#--创建存储过程

CREATE PROCEDURE proc_users_getCount(OUT n INT)

BEGIN

SELECT COUNT(*) FROM users ;

END

#--MYSQL调用存储过程

CALL proc_users_getCount(@n);

#demo2:创建一个简单的存储过程(根据用户id获取用户信息),带输入参数。

#--删除存储过程

DROP PROCEDURE IF EXISTS proc_users_findById;

#--创建存储过程

CREATE PROCEDURE proc_users_findById(IN n INT)

BEGIN

SELECT * FROM users WHERE id=n;

END

#--定义变量

SET @n=1;

#--调用存储过程

CALL proc_users_findById(@n);

#Last:操作存储过程时应注意:

#1.删除存储过程时只需要指定存储过程名即可,不带括号;

#2.创建存储过程时,不管该存储过程有无参数,都需要带括号;

#3.在使用SET定义变量时应遵循SET的语法规则;

#SET @变量名=初始值;

#4.在定义存储过程参数列表时,应注意参数名与数据库中字段名区别开来,否则将出现无法预期的结果.

#END:java中调用存储过程util

#// 执行存储过程

#@Override

#public ResultSet execProc(final String procName, final Object[] params) {

#return (ResultSet) getHibernateTemplate().execute(

#new HibernateCallback() {

#public Object doInHibernate(Session session)

#throws HibernateException, SQLException {

#CallableStatement cstmt = session.connection()

#.prepareCall(procName);

#if (params != null) {

#for (int i = 0; i < params.length; i++) {

#cstmt.setObject(i + 1, params[i]);

#}

#}

#ResultSet rs = cstmt.getResultSet();

#return rs;

#}

#});

#}

分享到:

18e900b8666ce6f233d25ec02f95ee59.png

72dd548719f0ace4d5f9bca64e1d7715.png

2013-06-29 11:22

浏览 96

评论

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值