黑马程序员技术交流社区
标题:
什么是存储过程?用什么来调用?
[打印本页]
作者:
王新年
时间:
2013-10-30 14:16
标题:
什么是存储过程?用什么来调用?
什么是存储过程?用什么来调用?
作者:
中关村阿旺
时间:
2013-10-30 17:43
存储过程类似于CSharp语言中的方法,它是SQL语句和控制语句的预编译集合。
存储过程保存在数据库里,可由应用程序通过一个调用执行,而且允许用户声明变量、逻辑控制语句以及其他强大的编程功能。
存储过程可包含逻辑控制语句和数据操作语句,它可以接收参数、输出参数、返回单个或多个结果集以及返回值。
存储过程分为以下两类:
1.系统存储过程
2.用户自定义的存储过程
一般情况下,用户自定义的存储过程使用的频率要比系统存储过程高。
一般的调用存储过程的方式:
exec 存储过程名 @参数1=参数值1,……@参数n=参数值n [输出参数]|[默认值]
作者:
Gump
时间:
2013-10-31 09:32
存储过程(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();
作者:
道逍云心
时间:
2014-1-4 21:49
{:soso_e161:}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2