|
1、 存储过程的概念:
所谓的存储过程就是存储在数据库当中的可以执行特定工作(查询和更新)的一组SQL代码的程序段。
2、存储过程的优点: 3、关于MySQL的存储过程
存储过程是数据库存储的一个重要的功能,但是MySQL在5.0以前并不支持存储过程,这使得MySQL在应用上大打折扣。好在MySQL 5.0终于开始已经支持存储过程,这样即可以大大提高数据库的处理速度,同时也可以提高数据库编程的灵活性。 4、mysql存储过程的创建: 格式:
(2)参数解释:
sp_name 存储过程的名字 (3)简单的例子:
1)这里需要注意的是DELIMITER //和DELIMITER ;两句,DELIMITER是分割符的意思,因为MySQL默认以";"为分隔符,如果我们没有声明分割符,那么编译器会把存储过程当成SQL语句进行处理,则存储过程的编译过程会报错,所以要事先用DELIMITER关键字申明当前段分隔符,这样MySQL才会将";"当做存储过程中的代码,不会执行这些代码,用完了之后要把分隔符还原。 2)存储过程根据需要可能会有输入、输出、输入输出参数,这里有一个输出参数s,类型是int型,如果有多个参数用","分割开。 3)过程体的开始与结束使用BEGIN与END进行标识。 4、列出所有的存储过程
?
7、Java代码调用存储过程(JDBC)
相关API:java.sql.CallableStatement 使用到java.sql.CallableStatement接口,该接口专门用来调用存储过程; 该对象的获得依赖于java.sql.Connection; 通过Connection实例的prepareCall()方法返回CallableStatement对象 prepareCall()内部为一固定写法{call 存储过程名(参数列表1,参数列表2)}可用?占位 eg: connection.prepareCall("{call proc_employee(?)}"); 存储过程中参数处理: 输入参数:通过java.sql.CallableStatement实例的setXXX()方法赋值,用法等同于java.sql.PreparedStatement 输出参数:通过java.sql.CallableStatement实例的registerOutParameter(参数位置, 参数类型)方法赋值,其中参数类型主要使用java.sql.Types中定义的类型 Java代码调用带输入参数的存储过程 (根据输入ID查询user信息)
8、MySQL存储过程的基本函数: (1).字符串类
CHARSET(str) //返回字串字符集 (2).数学类
ABS (number2 ) //绝对值
(3).日期时间类
ADDTIME (date2 ,time_interval ) // 将 time_interval 加到 date2
CONVERT_TZ (datetime2 ,fromTZ ,toTZ ) // 转换时区 CURRENT_DATE ( ) // 当前日期 CURRENT_TIME ( ) // 当前时间 CURRENT_TIMESTAMP ( ) // 当前时间戳 DATE (datetime ) // 返回 datetime 的日期部分 DATE_ADD (date2 , INTERVAL d_value d_type ) // 在 date2 中加上日期或时间 DATE_FORMAT (datetime ,FormatCodes ) // 使用 formatcodes 格式显示 datetime DATE_SUB (date2 , INTERVAL d_value d_type ) // 在 date2 上减去一个时间 DATEDIFF (date1 ,date2 ) // 两个日期差 DAY (date ) // 返回日期的天 DAYNAME (date ) // 英文星期 DAYOFWEEK (date ) // 星期 (1-7) ,1 为星期天 DAYOFYEAR (date ) // 一年中的第几天 EXTRACT (interval_name FROM date ) // 从 date 中提取日期的指定部分 MAKEDATE (year ,day ) // 给出年及年中的第几天 , 生成日期串 MAKETIME (hour ,minute ,second ) // 生成时间串 MONTHNAME (date ) // 英文月份名 NOW ( ) // 当前时间 SEC_TO_TIME (seconds ) // 秒数转成时间 STR_TO_DATE (string ,format ) // 字串转成时间 , 以 format 格式显示 TIMEDIFF (datetime1 ,datetime2 ) // 两个时间差 TIME_TO_SEC (time ) // 时间转秒数 ] WEEK (date_time [,start_of_week ]) // 第几周 YEAR (datetime ) // 年份 DAYOFMONTH(datetime) // 月的第几天 HOUR(datetime) // 小时 LAST_DAY(date) //date 的月的最后日期 MICROSECOND(datetime) // 微秒 MONTH(datetime) // 月 MINUTE(datetime) // 分 返回符号 , 正负或 0 SQRT(number2) //开平方
参照:http://my.oschina.net/u/195896/blog/75310 http://www.blogjava.net/sxyx2008/archive/2009/11/24/303497.html http://pcwanli.blog.163.com/blog/static/4531561120123243279258/ http://wenku.baidu.com/view/d41d44bec77da26925c5b0de.html |
用户登录
还没有账号?立即注册
用户注册
投稿取消
| 文章分类: |
|
还能输入300字
上传中....
丶浅陌丶