如何通过jdbc调用存储过程
在java.sql.Connection类中的public CallableStatement prepareCall(String sql)方法调用存储过程。Sql为an SQL statement that may contain one or more ‘?’ parameter placeholders. Typically this statement is a JDBC function call escape string.,即调用存储过程语句
Example:
Stored procedures:
Create or replace procedure addMember(name in varchar2(50),sex in varchar2(50)) as
begin
insert into family f (f.name,f.sex) values (name,sex);
end addMember;
Java source code:
…………………………………get Connection
String procedure = “{call addMember(?,?)}”;
CallableStatement cstmt = conn.prepareCall(procedure);
cstmt.setString(1,”马锐”);
cstmt.serString(2,”男”);
cstmt.excute();
………..close connection
若是需要返回值,我们可以通过function实现。可用下面方法
Example:
Stored procedures:
Create or replace function viewMember return types.cursortype as
family_cursor types.cursortype;
begin
open family_cursor for select f.name,f.sex from family f
return family_cursor
end addMember;
Java source code:
…………………………………get Connection
String procedure =”begin :1:=viewMember;end;”;
CallableStatement cstmt = conn.prepareCall(procedure);
cstmt.registerOutParameter(1,OracleTypes.CURSOR);
cstmt.execute();
ResultSet rset = (ResultSet)cstmt.getObject(1);
while(rset.next())
System.out.println(rset.getString(1);
cstmt.close();
)
………..close connection
Example:
Stored procedures:
Create or replace procedure addMember(name in varchar2(50),sex in varchar2(50)) as
begin
insert into family f (f.name,f.sex) values (name,sex);
end addMember;
Java source code:
…………………………………get Connection
String procedure = “{call addMember(?,?)}”;
CallableStatement cstmt = conn.prepareCall(procedure);
cstmt.setString(1,”马锐”);
cstmt.serString(2,”男”);
cstmt.excute();
………..close connection
若是需要返回值,我们可以通过function实现。可用下面方法
Example:
Stored procedures:
Create or replace function viewMember return types.cursortype as
family_cursor types.cursortype;
begin
open family_cursor for select f.name,f.sex from family f
return family_cursor
end addMember;
Java source code:
…………………………………get Connection
String procedure =”begin :1:=viewMember;end;”;
CallableStatement cstmt = conn.prepareCall(procedure);
cstmt.registerOutParameter(1,OracleTypes.CURSOR);
cstmt.execute();
ResultSet rset = (ResultSet)cstmt.getObject(1);
while(rset.next())
System.out.println(rset.getString(1);
cstmt.close();
)
………..close connection
【如何通过jdbc调用存储过程】相关文章
2. spring的jdbc与传统的jdbc有什么区别,其核心类有那些?
4. 在DELPHI中调用存储过程和使用内嵌SQL哪种方式更好
5. JSF面试题:如何管量web层中的Bean,用什么标签。如何通过jsp页面与Bean绑定在一起进行处理?
7. 如何实现jdbc性能优化
8. 如何提高JDBC的性能
10. 如何在存储过程中使用Loop
本文来源:https://www.mianshiwenti.com/a12384.html
进入下载页面
上一篇:25道Java面试题集合
下一篇:SQL中where和having的区别
﹝如何通过jdbc调用存储过程﹞相关内容
- Jdbc数据访问技术面试题
- JDBC操作数据库的基本流程是什么
- 递归实现回文判断(如:abcdedbca就是回文,判断一个面试者对递归理解的简单程序)
- 存储过程和函数的区别
- 存储过程和sql语句的优缺点
- 一道SQL存储过程面试题
- 存储过程的优缺点是什么
- 存储过程的优点有哪些
- 如何通过自我介绍让HR更好认识你?
- WEB控件及HTML服务端控件能否调用客户端方法?如果能,请解释如何调用?