JDBC执行存储过程的标准语法有两种形式:
1:{call procedureName para1, para2,...}
2:{?=call procedureName para1, para2,...}其中参数是可选的。如果存储过程不取任何参数,则调用格式为:
{call procedureName}如果存储过程有返回值,则应该使用形式2。存储过程中的任何参数都可以使用?代替。如果存储过程会改变参数值,则在调用存储过程的执行语句前,应当先注册输出参数,如下所示
CallableStatement cstmt = conn.prepareCall("{call findName}");
cstmt.registerOutParameter(1, Types.VARCHAR);
cstmt.execute();
System.out.println("the name is " + cstmt.getString(1));说明:到现在为止我还没有真正用过存储过程,并不知道是否会成功,自己试一下。我认为存储过程有一个很大的缺点,如果客户的数据库变了,几乎所有存储过程语句要重写。
1:{call procedureName para1, para2,...}
2:{?=call procedureName para1, para2,...}其中参数是可选的。如果存储过程不取任何参数,则调用格式为:
{call procedureName}如果存储过程有返回值,则应该使用形式2。存储过程中的任何参数都可以使用?代替。如果存储过程会改变参数值,则在调用存储过程的执行语句前,应当先注册输出参数,如下所示
CallableStatement cstmt = conn.prepareCall("{call findName}");
cstmt.registerOutParameter(1, Types.VARCHAR);
cstmt.execute();
System.out.println("the name is " + cstmt.getString(1));说明:到现在为止我还没有真正用过存储过程,并不知道是否会成功,自己试一下。我认为存储过程有一个很大的缺点,如果客户的数据库变了,几乎所有存储过程语句要重写。
解决方案 »
- oracle.jdbc.driver.T4CConnection@1e1414ed is closed
- 向各位服务器开发的大牛请教一个关于社交类软件标签的问题
- 关于获取文件到HashMap的问题
- jsp+hibernate
- 在线急救,Struts + Spring + Hibernate乱码问题
- 关于自学怎么找项目实践呢?
- 为什么classpath设置不起作用,有这方便经验的朋友告诉我???急!
- mysql时间函数
- 请教有关jsp的配置
- 关于浏览器涮新的奇怪问题
- 200分,奇怪的servlet页面刷新的问题??????????
- 谁能解释一下JAVA中各种编码机制的区别?比如ISO-8859-1和gb2312有什么区别?GBK和gb2312是不是一样的编码机制?
比如说我返回的结果值该如何绑定,等, 返回值如何绑定, 如在参数中既有in 也有out 的该如何绑定 ?谢谢
call.setString(1,"strTableName");
call.registerOutParameter(2,OracleTypes.CURSOR);// 注册out参数的SQL数据类型
call.execute();
rs=(ResultSet)call.getObject(2);// 取得得数据结果集合//hqo_test存储过程名,两个参数,第一个为输入参数即in类型为string
//第二个为输出参数,即out,是一个结果集.