java访问数据库存储过程

这里有过程CREATEORREPLACEPROCEDUREPROC_sensor_time(startD1INVarchar2,endD1INVarchar2,inter... 这里有过程CREATE OR REPLACE PROCEDURE PROC_sensor_time
( startD1 IN Varchar2,
endD1 IN Varchar2,
intervalIn In Varchar2
) As
BEGIN

给出三个参数,用方法现实
展开
 我来答
nanwang21
2015-10-10 · TA获得超过2943个赞
知道大有可为答主
回答量:1220
采纳率:82%
帮助的人:232万
展开全部
java中调用Oracle存储过程
1、编写存储过程
<code class=" hljs oxygene">CREATE OR REPLACE PROCEDURE sp_pro3(sp_name VARCHAR2,sp_sal NUMBER )
IS
BEGIN
--根据用户名修改工资
UPDATE emp SET sal=sp_sal WHERE ename=sp_name;
END;
</code>

2、引入jdbc6.jar,编写测试类Test.java
<code class=" hljs java">package testOraclePro;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
public class Test {
public static void main(String[] args) {
try{
//1.加载驱动
Class.forName("oracle.jdbc.driver.OracleDriver");
//2.获取连接
Connection ct=DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:XE","sys as sysdba","123456");
//3.创建CallableStatement
CallableStatement cs=ct.prepareCall("{call sp_pro3(?,?)}");
//4.赋值
cs.setString(1, "zxs");
cs.setFloat(2,455f);
//5.执行
cs.execute();
//6.关闭资源
cs.close();
ct.close();
}catch(Exception e){
e.printStackTrace();
}
}
}</code>

执行上面的测试类,即可调用存储过程,执行相应的程序了。
tips:可通过下面的SQL语句来获取数据库名称:
<code class=" hljs ruleslanguage">SELECT * FROM V$INSTANCE </code>
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-12-02
展开全部
class.forName(\"sun.jdbc.odbc.JdbcOdbcDriver\"); //加载驱动
Connection con=DriverManager.getConnection(\"Jdbc:Odbc:test\",\"sa\",\"\"); //获得连接
String call=\"{call proc_select(?,?)};\" //调用语句
CallableStatement proc=con.preparecall(call); //调用存储过程
proc.setString(1,\"12345678\"); //给输入参数传值
proc.setString(2,\"12345678\"); //给输入参数传值
proc.setString(3,\"12345678\"); //给输入参数传值
proc.execute(); //执行
String address=proc.getString(2); //获得输出参数
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-12-02
展开全部
public void PROC_sensor_time(String start, String end, String interval) {

CallableStatement cstmt = null;
Connection con=null;
try {
con = this.getConnection();
con.setAutoCommit(false);

String procedure = "{call PROC_sensor_time(?,?,?) }";
cstmt = con.prepareCall(procedure);
cstmt.setString(1, start);
cstmt.setString(2, end);
cstmt.setInt(3, gap);
cstmt.executeUpdate();

cstmt.close();
cstmt = null;
con.commit();

} catch (Exception e) {
e.printStackTrace();
} finally {

if (cstmt != null)
try {
cstmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
try {
this.closeConnection();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式