A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王新年 中级黑马   /  2013-10-30 14:16  /  3617 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

什么是存储过程?用什么来调用?

3 个回复

倒序浏览
存储过程类似于CSharp语言中的方法,它是SQL语句和控制语句的预编译集合。
存储过程保存在数据库里,可由应用程序通过一个调用执行,而且允许用户声明变量、逻辑控制语句以及其他强大的编程功能。
存储过程可包含逻辑控制语句和数据操作语句,它可以接收参数、输出参数、返回单个或多个结果集以及返回值。
存储过程分为以下两类:
1.系统存储过程
2.用户自定义的存储过程
一般情况下,用户自定义的存储过程使用的频率要比系统存储过程高。
一般的调用存储过程的方式:
exec 存储过程名 @参数1=参数值1,……@参数n=参数值n [输出参数]|[默认值]
回复 使用道具 举报
存储过程(stored procedure)是一组预先编译好的 transact-sql代码,由于是已经编译好的代码,所以执行的时候不必再次进行编译,从而提高了程序的运行效率.存储过程跟函数不同,存储过程不能在被调用的位置上返回数据,也不能被应用在语句当中.但是存储过程可以使用变量的形式来返回参数.存储过程具有执行速度快、模块化的程序设计、减少网络通信量、保证系统安全性等优点。

JDBC调用存储过程: CallableStatement
在Java里面调用存储过程,写法那是相当的固定:
Class.forName(....
Connection conn = DriverManager.getConnection(....
/**
*p是要调用的存储过程的名字,存储过程的4个参数,用4个?号占位符代替
*其余地方写法固定
*/
CallableStatement cstmt = conn.prepareCall("{call p(?,?,?,?)}");
/**
*告诉JDBC,这些个参数,哪些是输出参数,输出参数的类型用java.sql.Types来指定
*下面的意思是,第3个?和第4个?是输出参数,类型是INTEGER的
*Types后面具体写什么类型,得看你的存储过程参数怎么定义的
*/
cstmt.registerOutParameter(3, Types.INTEGER);
cstmt.registerOutParameter(4, Types.INTEGER);
/**
*在我这里第1个?和第2个?是输入参数,第3个是输出参数,第4个既输入又输出
*下面是设置他们的值,第一个设为3,第二个设为4,第4个设置为5
*没设第3个,因为它是输出参数
*/
cstmt.setInt(1, 3);
cstmt.setInt(2, 4);
cstmt.setInt(4, 5);
//执行
cstmt.execute();
//把第3个参数的值当成int类型拿出来
int three = cstmt.getInt(3);
System.out.println(three);
//把第4个参数的值当成int类型拿出来
int four = cstmt.getInt(4);
System.out.println(four);
//用完别忘给人家关了,后开的先关
cstmt.close();
conn.close();

回复 使用道具 举报
{:soso_e161:}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马