-- Create table
create table T_QUN_STUDY
(
T_ID NUMBER not null,
T_NAME VARCHAR2(50),
T_PASSWORD VARCHAR2(50)
)
tablespace USERS
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 64
minextents 1
maxextents unlimited
);
-- Create/Recreate primary, unique and foreign key constraints
alter table T_QUN_STUDY
add primary key (T_ID)
using index
tablespace USERS
pctfree 10
initrans 2
maxtrans 255
storage
(
initial 64K
minextents 1
maxextents unlimited
);
写的存储过程包和主体:
CREATE OR REPLACE PACKAGE BODY QUN_STUDY IS
------------------------------
--插入新数据--
--author:xiaohe--
--date:2009-11-21--
PROCEDURE INSERT_T_QUN_STUDY(P_ID IN NUMBER,
P_NAME IN VARCHAR2,
P_PASSWORD IN VARCHAR2) IS
BEGIN
INSERT INTO T_QUN_STUDY
(T_ID, T_NAME, T_PASSWORD)
VALUES
(P_ID, P_NAME, P_PASSWORD);
END;
----------------------------
--删除信息--
--author:xiaohe--
--date:2009-11-21 --
PROCEDURE DEL_T_QUN_STUDY(P_ID IN NUMBER, X_OUT_RECORD OUT NUMBER) IS
BEGIN
DELETE T_QUN_STUDY TQS WHERE TQS.T_ID = P_ID;
X_OUT_RECORD := 0;
EXCEPTION
WHEN OTHERS THEN
X_OUT_RECORD := -1;
END;
-------------------------------
--查询表所有信息--
----
----
PROCEDURE QUERY_ALL_INFO(X_OUT_RECORD OUT NUMBER,
X_OUT_CURSOR OUT SYS_REFCURSOR) IS
BEGIN
OPEN X_OUT_CURSOR FOR
SELECT * FROM T_QUN_STUDY;
X_OUT_RECORD := 0;
EXCEPTION
WHEN OTHERS THEN
X_OUT_RECORD := -1;
END;
END QUN_STUDY;
JAVA 代码调用:
package com.procedure.core;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Types;
import oracle.jdbc.OracleTypes;
public class ConnectionDataBase {
private String name = "scott";
private String password = "tiger";
private String url = "jdbc:oracle:thin:@localhost:1521:ORCL";
private String driverClassName = "oracle.jdbc.driver.OracleDriver";
/**
* 返回数据库 连接
*
* @return
*/
public Connection getConn() {
Connection conn = null;
try {
Class.forName(driverClassName);
conn = DriverManager.getConnection(url, name, password);
} catch (Exception e) {
e.printStackTrace();
}
return conn;
}
public static void main(String[] agrs) throws SQLException {
ConnectionDataBase cdb = new ConnectionDataBase();
/**
* 添加 无输出参数
*/
// Connection conn = cdb.getConn();
// CallableStatement call = conn
// .prepareCall("{call QUN_STUDY.INSERT_T_QUN_STUDY(?,?,?)}");
// call.setInt(1, 4);
// call.setString(2, "蒙-混混");
// call.setString(3, "76544");
// boolean flag = call.execute();
// System.out.println(flag);
/**
* 删除 得到输出参数
*/
// Connection conn = cdb.getConn();
// CallableStatement call = conn
// .prepareCall("{call QUN_STUDY.DEL_T_QUN_STUDY(?,?)}");
// call.setInt(1, 4);
// call.registerOutParameter(2, Types.INTEGER);
// call.execute();
// Integer result = call.getInt(2);
// System.out.println("执行结果0为正常 -1为不正常" + result);
/**
* 使用游标查询 所有的信息
*/
Connection conn = cdb.getConn();
/**
* 得到 存储过程对象
*/
CallableStatement call = conn
.prepareCall("{call QUN_STUDY.QUERY_ALL_INFO(?,?)}");
/**
* 注册 整型
*/
call.registerOutParameter(1, Types.INTEGER);
/**
* 注册游标类型
*/
call.registerOutParameter(2, OracleTypes.CURSOR);
call.execute();
/**
* 获取第一个注册的参数
*/
Integer result = call.getInt(1);
/**
* 将游标 类型 转换为 结果集
*/
ResultSet rs = (ResultSet) call.getObject(2);
while (rs.next()) {
System.out.println("id:" + rs.getInt(1));
System.out.println("name:" + rs.getString(2));
System.out.println("password:" + rs.getString(3));
}
}
}
OK 基本就已经搞定了
如果大家有不明白 或者想共同学习的可以加群:2987841
也可以联系我本人QQ:86780004
源代码(存储过程包 建表SQL JAVA代码)
有时调用存储过程会报一个错误:
ORA-08103: 对象不再存在
错误的解决办法是调用存储过程的连接修改为手动提交(出现错误的原因可能是由于临时表的原因,有人说在存储过程里加入事务处理可以解决)
之下为MSSQL 存储过程 调用
<!--StartFragment -->
CREATE PROCEDURE SP_TEST
(
@FICO_CODE Varchar(20),
@ND Varchar(4)
) AS
begin
select * from abc
end
java调用如下
CallableStatement stmt = conn.prepareCall("{ call SP_FASPQH_QUERY_DBIREG_DATA(?,?)}");
stmt.setString(1, "000");
stmt.setString(2, "2011");
ResultSet rs = stmt.executeQuery();
分享到:
相关推荐
java,调用存储过程java,调用存储过程java,调用存储过程java,调用存储过程java,调用存储过程java,调用存储过程java,调用存储过程java,调用存储过程java,调用存储过程java,调用存储过程java,调用存储过程
值得注意的是,上述代码中的文件名列表(如Project1.cfg、Unit1.dcu等)与Java调用存储过程无关,它们看起来像是Delphi或FreePascal项目的文件,这些文件通常用于描述项目配置、单元信息、表单布局等,而不是与Java...
总之,调用存储过程是Java开发中处理数据库操作的重要环节。理解如何设置`IN`和`OUT`参数,并正确地执行和获取结果,将有助于提高代码的效率和可维护性。希望这个详细讲解对你有所帮助,如果你在实践中遇到任何问题...
### Java调用存储过程实例:详解 #### 存储过程简介 存储过程是一种在数据库中编写的SQL程序,可以接受输入参数,执行一系列操作,并返回结果或输出参数。它们可以提高应用程序的性能、安全性和复用性。在Oracle...
### JAVA调用存储过程知识点详解 #### 一、无结果集返回的存储过程调用 在Java中调用不返回结果集的存储过程时,主要步骤包括建立连接、准备调用语句、设置输入参数、执行存储过程以及处理可能产生的警告信息。 1...
### Java调用存储过程——传入集合参数:深入解析与实践 #### 核心知识点概览 在Java应用中,调用数据库存储过程时,往往需要处理复杂的参数传递,特别是当参数为集合类型时,这一过程变得更加具有挑战性。本文将...
java调用存储过程,支持获取return值,output返回值,以及查询的表数据,表数据允许有多个查询结果集
以上就是Java调用Oracle存储过程或函数的主要知识点,实践中要根据具体情况进行适当的调整和优化。在处理过程中,参考Oracle的JDBC文档和官方示例,以及Java API文档,将有助于理解和解决问题。
java 调用存储过程 总结 创建表 创建存储过程 创建java程序调用
本篇文章将深入探讨如何使用Java与MySQL数据库进行交互,实现调用存储过程,并提供一个测试通过的实例。 首先,理解存储过程是数据库管理系统提供的一种预编译的SQL语句集合,它封装了特定的功能,可以提高执行效率...
本文介绍了Java调用Oracle存储过程返回结果集Record和Cursor的相关知识点,包括创建Type、PACKAGE和PROCEDURE,Java代码中调用存储过程,并获取结果集。这些知识点对深入了解Oracle存储过程和Java调用Oracle存储过程...
本话题将详细讲解如何使用Java调用带有参数的Oracle存储过程,并获取存储过程返回的集合。 首先,Oracle存储过程是一种预编译的SQL语句集合,它可以在数据库服务器端执行,提高性能,减少网络传输。`PROCEDURE.sql`...
总结来说,Java调用存储过程并处理返回数组,需要理解存储过程的定义,正确使用`CallableStatement`或其子类如`OracleCallableStatement`,以及处理Oracle特定数据类型的方法。通过这些技巧,我们可以有效地在Java...
3. **调用存储过程**:使用`CallableStatement`对象来执行存储过程。对于带参数的存储过程,需要设置参数并执行`executeProcedure()`。 ```java String procedureName = "{call findAllBook(?) }"; // 例如,调用...
Java 调用存储过程小结 Java 调用存储过程是指在 Java 程序中调用数据库中的存储过程,以便实现复杂的业务逻辑和数据处理。存储过程是指保存在数据库并在数据库端执行的程序,可以使用特殊的语法在 Java 类中调用...
二、 Java 调用存储过程 要在 Java 中调用存储过程,需要使用 JDBC 连接 DB2 数据库。首先,需要加载 DB2 驱动程序: ```java String JDBCDriver = "com.ibm.db2.jcc.DB2Driver"; ``` 然后,使用 DriverManager ...
### Java调用存储过程的两种方法 在Java中调用数据库中的存储过程是常见的操作之一,这不仅可以提高程序性能和代码可维护性,还可以更好地利用数据库的功能。根据提供的标题、描述以及部分内容,本文将详细介绍Java...