Java 调用Oracle的存储过程问题

问题描述

在程序中,我已经和数据库连接上了但是在执行CallableStatementcs=con.prepareCall("{callp3()}");st.execute();

的时候在那个execute()中出不来一直在运行,但是把存储过程名字写错误了他会有相关的异常提示,最后我就改成执行普通的sql语句Statementst=con.createStatement();st.executeUpdate("updateempsetsal=129whereename='KING'");

还是一样的在那个executeUpdate()函数里面出不来,但是把sal改成ssal就会有异常提示说不存在ssal字段,为什么会这样呢以前没用过Oracle现在开始学习

解决方案

解决方案二:
没人遇到过吗是不是和JDK有关啊
解决方案三:
把你的完整代码贴出来
解决方案四:
packagecom.test;importjava.sql.*;publicclassPlSqlTest{/***@paramargs*/publicstaticvoidmain(String[]args){Connectioncon=null;try{//TODOAuto-generatedmethodstubClass.forName("oracle.jdbc.driver.OracleDriver");con=DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:MYORACLE","scott","sa");//CallableStatementcs=con.prepareCall("{callp3()}");//cs.setString(1,"KING");//cs.setInt(2,100);Statementst=con.createStatement();st.executeUpdate("updateempsetsal=129whereename='KING'");}catch(SQLExceptione){//TODO:handleexceptione.printStackTrace();try{System.out.println("exception");con.rollback();}catch(SQLExceptione1){//TODOAuto-generatedcatchblocke1.printStackTrace();}}catch(ClassNotFoundExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}}}

解决方案五:
我安装的是Oracle10gJDK1.6
解决方案六:
驱动用的是ojdbc6.jar
解决方案七:
CallableStatementcs=con.prepareCall("{callp3()}");cs.execute();

解决方案八:
楼主你好,我只是个新手,没用调用过Oracle的存储过程,你的代码CallableStatementcs=con.prepareCall("{callp3()}");cs.execute();

有问题,我的笔记上是这样写的CallableStatementcs=con.prepareCall("{callp(?,?,?,?)}");

存储过程的格式应该是这样写的吧。恩,我不太了解存储过程,帮不了你...
解决方案九:
这段代码没有问题引用3楼ailanyuqian的回复:

Javacodepackagecom.test;importjava.sql.*;publicclassPlSqlTest{/***@paramargs*/publicstaticvoidmain(String[]args){Connectioncon=null;……

解决方案十:
三种执行SQL语句的对象StatementPreparedStatementCallableStatementConnectionconn=DriverManager.getConnection(url,user,pwd);CallableStatementcs=conn.prepareCall("{callpro(?,?)}");//当有参数时执行存储过程cs.setString(1,"xx");cs.setString(2,"xx");cs.execute();PreparedStatementpstmt=conn.prepareStatement("updateempsetsname=?wheresid=?");//使用预编译的SQL语句对象pstmt.setString(1,"xx");pstmt.setString(2,"xx");pstmt.executeQuery();Statementstmt=conn.createStatement();stmt.executeUpdate("updateempsetsname='aliba'wheresid=1");//有executeUpdate时执行SQL语句

解决方案十一:
修改时用pstmt.executeUpdate();//上面写错了查询时用executeQuery();存储过程用execute();
解决方案十二:
可能是别人没commit。
解决方案十三:
学习了····
解决方案十四:
你oracle的存储过程有没有问题另外我也没有见过调用存储过程不注册的({callpro(?,?)})这里边的问号不可少另外如果你想要有内容从数据库返回那么就必须要注册那个问号比如第二个问号你想要有数据从数据库输出就得先注册他的类型
解决方案十五:
你用int接下你执行之后的返回值看看是-1还是别的什么
解决方案:
引用7楼xiaoair的回复:

楼主你好,我只是个新手,没用调用过Oracle的存储过程,你的代码JavacodeCallableStatementcs=con.prepareCall("{callp3()}");cs.execute();有问题,我的笔记上是这样写的JavacodeCallableStatementcs=con.prepareCall("{callp(?,?,?,?)}");……

这位大哥,你笔记有错,你那是带有输入或输出或既有输入又有输出参数的情况,如果没有可以直接callp3()
解决方案:
楼住,如果你的存储过程带有输入参数,即你要带条件到存储过程里,你得先注册所带条件的数据类型cs.registParameter(1,类型),可能这个方法名写错了,你去核对下;1:是代表条件的位置,也就是说你的存储过程里第几个?是输入条件比如:callp(?,?,?,?)},如果红色问号是输入条件,则是cs.registParameter(2,类型)不知道表达清楚没有?你可以去网上查些资料阿,关于存储过程的inoutinout参数

时间: 2024-10-26 14:13:28

Java 调用Oracle的存储过程问题的相关文章

java调用oracle分页存储过程示例_java

1.分页类 复制代码 代码如下: package org.zh.basic; /** * 页面类 *  * @author keven *  */public class PageInfo {     // 定义    private String p_tableName; // -表名    private String p_strWhere; // --查询条件    private String p_orderColumn; // --排序的列    private String p_or

weblogic连接池-Java调用Oracle存储过程传入数组参数报错

问题描述 Java调用Oracle存储过程传入数组参数报错 weblogic连接池 JNDI提供的链接保存 Oracle数组 报错 oracle.jdbc.driver.T4CConnection cannot be cast to oracle.jdbc.OracleConnection oracle.jdbc.driver.T4CConnection cannot be cast to oracle.jdbc.OracleConnection 大家好,我在用weblogic连接池 JNDI

使用Java调用Oracle数据库的存储过程实例

使用Java调用Oracle数据库的存储过程实例时间:2009-08-19 18:02:43来源:网络 作者:未知 点击:984次 一:无返回值的存储过程1.建立存储过程CREATE OR REPLACE PROCEDURE TESTA(PARA1 IN VARCHAR2,PARA2 IN VARCHAR2) ASBEGININSERT INTO T_TEST (I_ID,I_NAME) VALUES (PARA1, PARA2);END TESTA; 2.相应的JAVA程序impo一:无返回值

java存储过程-java调用oracle存储过程到execute()就卡住了?

问题描述 java调用oracle存储过程到execute()就卡住了? debug看了一下就是走到execute()这就卡住了,是偶尔才发生这样的状况,一般这样的情况等待10分钟左右就没有问题了,在execute()这就不会卡住了,很快就执行过去. 我感觉是系统中有很多用户都在做各种不同的操作占用了oracle的什么资源(我们这个系统中有不少操作都是用存储过程实现的),导致执行存储过程时,一直再等待这个资源,希望有大神能告诉我是什么原因导致的?谢谢 解决方案 java调用oracle存储过程用

java基础---->java调用oracle存储过程(转)

存储过程是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它.今天,我们就开始学习java中调用oracle的存储过程.   java中调用oracle的存储过程 项目结构如下: 一. 在数据库创建存储过程的脚本,如果使用的是本地的oracle数据库,则需要开启服务:OracleOraDb11g_home1TNSListener和OracleServiceORCL

java调用oracle存储过程,返回类型record

问题描述 如题,如果在java中调用oracle的存储过程,但输出参数是record类型的,如何获得结果啊createorreplacepackagerecordpackistypestudent_typeisrecord(idnumber,namevarchar2(20));end; createorreplaceprocedurerecordPro(v_recordoutrecordpack.student_type)isbeginselectid,nameintov_recordfroms

如何在Delphi中调用oracle的存储过程返回数据集

oracle|存储过程|数据 选自CSDN http://search.csdn.net/Expert/topic/2280/2280860.xml?temp=2.169436E-02 论坛中JCC0128 网友的发言 [delphi+oracle报表解决方案(一)]delphi中调用oracle的存储过程(分带返回游标,不返回值两种)  关键字: delphi ,oracle存储过程,游标,返回数据集,报表 注:delphi 6+ oracle 8.1.6 一.创建包与包体 1.附:建表aac

VFP中调用Oracle的存储过程

VFP由于其通俗.易用,深受广大开发人员的欢迎,但其安全性与稳定性却不十分完善.而Oracle在此方面的优点是有口皆碑的,两者结合,能开发出高效.安全和稳定的应用系统.有关在VFP中调用Oracle存储过程方法的资料较少,下面就此举一简单例子,希望起到抛砖引玉的作用. 此方法适用于用VFP作前端开发工具.Oracle作后端数据库的C/S开发方法. 在Oracle端,建有如下表和存储过程: 表gzb如下: SQL〉select * from gzb; ID GZ 1 3050 3 2500 2 4

求教大神,java调用oracle把数据库记录下载到本地的工程

问题描述 求教大神,java调用oracle把数据库记录下载到本地的工程 如上图,已经用java调用dos命令行进入sql界面,现在如何编写java代码来执行以下:sset linesize 999 set pagesize 999 spool XX_EVA_RAROC_PKG.sql select text from all_source where name='XX_EVA_RAROC_PKG' order by line; spool off; 用java直接连数据库是否也可行,求教大神提