
正文
oraclejava调用存储过程返回值,oracle存储过程中调用函数
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
java调用oracle存储过程无法获得正确的返回值,每次都是0
你通过JDBC这种方式调用存储过程,应该使用 CallableStatement 类, CallableStatement cs=conn.prepareCall(str);补充一句,避免你在执行有错,cs.excuse();这个方法为执行,然后在获取输出参数。
其实,这篇短文,我早就应该写了。因为,java存储过程今后在各大数据库厂商中越来越流行,功能也越来越强大。这里以Oracle为例,介绍一下java存储过程的具体用法。
从报错看是字符串索引超出范围,需要看存储过程的执行结果。可以在sqlplus中执行exec PKG_I_DFXM.PRC_I_NBBPCF(你的参数)看下结果。
java.sql 里面的 public interface CallableStatement extends PreparedStatement 用于执行 SQL 存储过程的接口。JDBC API 提供了一个存储过程 SQL 转义语法,该语法允许对所有 RDBMS 使用标准方式调用存储过程。
相关问答
Q1: 如何使用java语言调用oracle存储过程?
1、api上的方法为 Connection.prepareCall(java.lang.String)prepareCall(String sql)throws SQLException 参数:sql - 可以包含一个或多个 ? 参数占位符的 SQL 语句。通常此语句是使用 JDBC 调用转义语法指定的。
2、如何创建java存储过程?通常有三种方法来创建java存储过程。 使用oracle的sql语句来创建:e.g. 使用create or replace and compile java source named name as 后边跟上java源程序。
3、使用 OUTPUT 参数 OUTPUT 参数允许外部过程、批处理或多条 Transact-SQL 语句访问在过程执行期间设置的某个值。下面的示例创建一个存储过程 (titles_sum),并使用一个可选的输入参数和一个输出参数。
4、代码都太大了都是一个工程的。15M,说下思路,写4个class,一个用来画主界面,一个用来处理逻辑操作,一个用来增加,修改界面,一个用来处理增加,修改逻辑。
5、Java调用存储过程的方法是通过调用Connection的实例方法prepareCall,prepareCall方法返回CallableStatement对象用于填充存储过程的参数。
6、把图里红框框起来的地方的双引号去掉试试看。
Q2: java中如何获取oracle存储过程返回的多个值。
1、或者你可以使用sql function获得返回值。
2、假若是在select语句中使用,则有限定条件: 函数只能返回一条记录(或者说一个字段的值)。
3、给你段代码参考,绝对可以:使用cs.registerOutParameter(2, OracleTypes.STRUCT, DBI.TYPE.T_SMS_TASK);OracleTypes.STRUCT,表示自定义的table类型, DBI.TYPE.T_SMS_TASK这个是你在oracle里面创建的类型。
4、使用 REF CURSOR 数据类型来处理 Oracle 结果集。REF CURSOR 是一个指向 PL/SQL 查询所返回的结果集的指针。与普通的游标不同,REF CURSOR 是一个变量,它是对游标的引用,可以在执行时将其设置为指向不同的结果集。
5、(1)创建包头,在其中声明类型和存储过程,类型应该引用游标;(2)创建包体,定义存储过程,执行查询,将查询得到的结果集以游标句柄的形式返回。
6、IN 参数值是使用继承自 PreparedStatement 的 set 方法设置的。在执行存储过程之前,必须注册所有 OUT 参数的类型;它们的值是在执行后通过此类提供的 get 方法获取的。
Q3: oracle存储过程中调用带返回参数的存储过程
1、values := A(参数);即可实现调用。备注:values必须在初始化过程中进行定义如: values VARCHAR(30);并且此类型必须与A存储过程返回参数类型一致。
2、新建一个存储过程(Procedure)。修改存储过程,这个存储过程有一个输入参数(pid)跟一个输出参数(name),即通过用户id查询用户名称并将名称返回。调试存储过程,找到刚刚创建的存储过程右击并点击【test】选项。
3、在过程体内,必须给OUT参数赋值。INOUT参数(输入输出参数)既可以从调用者向过程中传递值,执行过程后还可返回可能改变了的值给调用者。
4、第一步,创建一个新的存储过程,见下图,转到下面的步骤。第二步,完成上述步骤后,修改存储过程。
5、可以通过以下方式来进行带参数存储过程执行。
6、直接调用就可以了。举个例子把 B 存储过程调用A 存储过程。PROCEDURE A (p_1 in number,p_2 out number)is v_1 number;begin V_1:=p_1;p_2:=v_1;end A;(1)如果A 与B同在一个package里面的话。
Q4: oracle存储过程实现查询功能,返回什么比较好??
1、存储过程是用来在里面进行单个SQL不好处理的东西才用的,比如比较复杂的业务逻辑,如果一定要返回大量数据的话,放在表里面就好了,不要用临时表,ORACLE的临时表诸多限制,会话或者事物结束数据也就没有了。
2、oracle 跟ms不一样。要返回表的记录数据,只能通过游标,或者自定义对象数组在存储过程中组装好后返回。
3、Oracle 需要通过 返回一个游标来处理。
4、与SQL Server的存储过程和函数均可以返回结果集不同的是,PL/SQL的存储过程和函数均不直接提供返回数据集的方法,但可以通过返回类型对象来实现返回数据集的效果。
Q5: Oracle存储过程怎么返回结果?
oracle 跟ms不一样。要返回表的记录数据,只能通过游标,或者自定义对象数组在存储过程中组装好后返回。
oracle不是不能,而是采用的方法不同罢了。
(1)创建包头,在其中声明类型和存储过程,类型应该引用游标;(2)创建包体,定义存储过程,执行查询,将查询得到的结果集以游标句柄的形式返回。
oraclejava调用存储过程返回值的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于oracle存储过程中调用函数、oraclejava调用存储过程返回值的信息别忘了在本站进行查找喔。







