java中怎么使用oracle的序列,过程和函数

一:无返回值的存储过程 存储过程为:CREATE OR REPLACE PROCEDURE TESTA(PARA1 IN VARCHAR2,PARA2 IN VARCHAR2) AS BEGIN INSERT INTO HYQ.B_ID (I_ID,I_NAME) VALUES (PARA1, PARA2);END TESTA;然后呢,在java里调用时就用下面的代码:package com.hyq.src;import java.sql.*;import java...
java中怎么使用oracle的序列,过程和函数
JAVA中使用oracle序列

直接使用
String sql="insert into wf_hxinxi (oid,zsnumber,sortinfo,address,dateinfo)values(SEQ_SYSTEMADD.Nextval,'"+hxinxiVO.getZsnumber()+"','"+hxinxiVO.getSortinfo()+"','"+hw+"','"+hxinxiVO.getDateinfo()+"')";

使用存储过程就更多,看你的传入,和传出情况,

一:无返回值的存储过程
存储过程为:
CREATE OR REPLACE PROCEDURE TESTA(PARA1 IN VARCHAR2,PARA2 IN VARCHAR2) AS
BEGIN
INSERT INTO HYQ.B_ID (I_ID,I_NAME) VALUES (PARA1, PARA2);
END TESTA;
然后呢,在java里调用时就用下面的代码:
package com.hyq.src;

import java.sql.*;
import java.sql.ResultSet;

public class TestProcedureOne {
public TestProcedureOne() {
}
public static void main(String[] args ){
String driver = "oracle.jdbc.driver.OracleDriver";
String strUrl = "jdbc:oracle:thin:@127.0.0.1:1521: hyq ";
Statement stmt = null;
ResultSet rs = null;
Connection conn = null;
CallableStatement cstmt = null;

try {
Class.forName(driver);
conn = DriverManager.getConnection(strUrl, " hyq ", " hyq ");
CallableStatement proc = null;
proc = conn.prepareCall("{ call HYQ.TESTA(?,?) }");
proc.setString(1, "100");
proc.setString(2, "TestOne");
proc.execute();
}
catch (SQLException ex2) {
ex2.printStackTrace();
}
catch (Exception ex2) {
ex2.printStackTrace();
}
finally{
try {
if(rs != null){
rs.close();
if(stmt!=null){
stmt.close();
}
if(conn!=null){
conn.close();
}
}
}
catch (SQLException ex1) {
}
}
}
}
当然了,这就先要求要建张表TESTTB,里面两个字段(I_ID,I_NAME)。
二:有返回值的存储过程(非列表)
存储过程为:
CREATE OR REPLACE PROCEDURE TESTB(PARA1 IN VARCHAR2,PARA2 OUT VARCHAR2) AS
BEGIN
SELECT INTO PARA2 FROM TESTTB WHERE I_ID= PARA1;
END TESTB;
在java里调用时就用下面的代码:
package com.hyq.src;

public class TestProcedureTWO {
public TestProcedureTWO() {
}
public static void main(String[] args ){
String driver = "oracle.jdbc.driver.OracleDriver";
String strUrl = "jdbc:oracle:thin:@127.0.0.1:1521:hyq";
Statement stmt = null;
ResultSet rs = null;
Connection conn = null;
try {
Class.forName(driver);
conn = DriverManager.getConnection(strUrl, " hyq ", " hyq ");
CallableStatement proc = null;
proc = conn.prepareCall("{ call HYQ.TESTB(?,?) }");
proc.setString(1, "100");
proc.registerOutParameter(2, Types.VARCHAR);
proc.execute();
String testPrint = proc.getString(2);
System.out.println("=testPrint=is="+testPrint);
}
catch (SQLException ex2) {
ex2.printStackTrace();
}
catch (Exception ex2) {
ex2.printStackTrace();
}
finally{
try {
if(rs != null){
rs.close();
if(stmt!=null){
stmt.close();
}
if(conn!=null){
conn.close();
}
}
}
catch (SQLException ex1) {
}
}
}
}

}
注意,这里的proc.getString(2)中的数值2并非任意的,而是和存储过程中的out列对应的,如果out是在第一个位置,那就是proc.getString(1),如果是第三个位置,就是proc.getString(3),当然也可以同时有多个返回值,那就是再多加几个out参数了。
三:返回列表
由于oracle存储过程没有返回值,它的所有返回值都是通过out参数来替代的,列表同样也不例外,但由于是集合,所以不能用一般的参数,必须要用pagkage了.所以要分两部分,
1, 建一个程序包。如下:
CREATE OR REPLACE PACKAGE TESTPACKAGE AS
TYPE Test_CURSOR IS REF CURSOR;
end TESTPACKAGE;
2,建立存储过程,存储过程为:
CREATE OR REPLACE PROCEDURE TESTC(p_CURSOR out TESTPACKAGE.Test_CURSOR) IS
BEGIN
OPEN p_CURSOR FOR SELECT * FROM HYQ.TESTTB;
END TESTC;
可以看到,它是把游标(可以理解为一个指针),作为一个out 参数来返回值的。
在java里调用时就用下面的代码:
package com.hyq.src;
import java.sql.*;
import java.io.OutputStream;
import java.io.Writer;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import oracle.jdbc.driver.*;

public class TestProcedureTHREE {
public TestProcedureTHREE() {
}
public static void main(String[] args ){
String driver = "oracle.jdbc.driver.OracleDriver";
String strUrl = "jdbc:oracle:thin:@127.0.0.1:1521:hyq";
Statement stmt = null;
ResultSet rs = null;
Connection conn = null;

try {
Class.forName(driver);
conn = DriverManager.getConnection(strUrl, "hyq", "hyq");

CallableStatement proc = null;
proc = conn.prepareCall("{ call hyq.testc(?) }");
proc.registerOutParameter(1,oracle.jdbc.OracleTypes.CURSOR);
proc.execute();
rs = (ResultSet)proc.getObject(1);

while(rs.next())
{
System.out.println("<tr><td>" + rs.getString(1) + "</td><td>"+rs.getString(2)+"</td></tr>");
}
}
catch (SQLException ex2) {
ex2.printStackTrace();
}
catch (Exception ex2) {
ex2.printStackTrace();
}
finally{
try {
if(rs != null){
rs.close();
if(stmt!=null){
stmt.close();
}
if(conn!=null){
conn.close();
}
}
}
catch (SQLException ex1) {
}
}
]
]

函数更是简单,具体的别人已经给更详细的说明,参考这个
http://zhidao.baidu.com/question/1567623.html?si=82008-10-28
JAVA中使用oracle序列

直接使用
String sql="insert into wf_hxinxi (oid,zsnumber,sortinfo,address,dateinfo)values(SEQ_SYSTEMADD.Nextval,'"+hxinxiVO.getZsnumber()+"','"+hxinxiVO.getSortinfo()+"','"+hw+"','"+hxinxiVO.getDateinfo()+"')";

使用存储过程就更多,看你的传入,和传出情况,

一:无返回值的存储过程
存储过程为:
CREATE OR REPLACE PROCEDURE TESTA(PARA1 IN VARCHAR2,PARA2 IN VARCHAR2) AS
BEGIN
INSERT INTO HYQ.B_ID (I_ID,I_NAME) VALUES (PARA1, PARA2);
END TESTA;2015-07-09
你是说JDBC中使用吧?就是跟在SQLPlus中使用一样,JAVA中的SQL语句同样是交给Oracle服务端来执行的。2008-10-23
mengvlog 阅读 11 次 更新于 2025-07-19 09:59:12 我来答关注问题0
  •  翡希信息咨询 怎样使用java 连接oracle数据库

    加载Oracle JDBC驱动:javaClass.forName;说明:这一步是为了让Java程序知道要使用的JDBC驱动是Oracle的。注意,从Oracle JDBC Driver 12c Release 2 开始,显式加载驱动类这一步不再是必需的,因为JDBC 4.0引入了自动加载机制。但为了确保兼容性,很多开发者还是会显式地加载驱动。2. 设置数据库连接U...

  •  翡希信息咨询 java中连接oracle数据库时写一条插入语句,数据库表中有序列怎么写?怎么获取到序列值?

    编写插入语句:在插入语句中,对于使用序列生成值的列,可以使用序列名.NEXTVAL来获取序列的下一个值。例如,假设有一个表my_table,其中有一个自增列id由序列my_sequence生成,其他列有column1和column2。插入语句可以写成:sqlINSERT INTO my_table VALUES ;2. 在Java中执行插入语句: 使用JDBC连接...

  •  腾云新分享 在java 中怎样调用oracle数据库中的数据

    在Java中调用Oracle数据库的具体步骤如下:首先,需要加载Oracle的JDBC驱动程序,使用Class.forName("oracle.jdbc.driver.OracleDriver")来完成这一步。接着,通过指定的连接字符串建立与数据库的连接,这里使用的是"jdbc:oracle:thin:@localhost:1521:shitou",这表示连接到本地主机,端口1521,数据库名为...

  •  武汉誉祥科技 如何用Java实现连接Oracle

    首先,创建一个新的Java Oracle工程,并在其中新建一个包,命名为com.zp。在该包下新建一个Java类,命名为java_oracle_jdbc。接着配置Oracle数据库驱动,具体操作为:右键点击Java工程(java_oracle),选择属性(Properties),然后导航到Java Build Path,点击Libraries,在这里添加外部JAR文件。选择oracle安...

  •  宸辰游艺策划 用jdbc连接oracle数据库,现在要实现数据的更新操作,在java web 项目里,求大神简单讲解下,再给出点代码

    在Java Web项目中,使用JDBC连接Oracle数据库并实现数据更新操作,可以按照以下步骤进行。首先,你需要建立一个包含用户名和用户ID文本框的表单页面,并通过POST请求将数据传递到更新页面。这里提供一个示例代码片段,帮助你完成这个任务。 在Java代码中,首行的指令指定了页面的编码和语言。接...

檬味博客在线解答立即免费咨询

Java相关话题

Copyright © 2023 WWW.MENGVLOG.COM - 檬味博客
返回顶部