当前位置: 代码迷 >> Java Web开发 >> sun.jdbc.odbc.JdbcOdbcBatchUpdateException: SQL Attempt to
  详细解决方案

sun.jdbc.odbc.JdbcOdbcBatchUpdateException: SQL Attempt to

热度:673   发布时间:2016-04-17 12:41:43.0
sql语句中有返回结果集的语句 100分
我要实现的功能查询abc 是否存在若存在则删除,继续执行owners表和owners表查出有用字段放入临时表abc中,再去执行批处理语句返回整型数组
但报有异常
sun.jdbc.odbc.JdbcOdbcBatchUpdateException: SQL Attempt to produce a ResultSet from executeBatch
这句代码是是否有错误?
System.out.println("petId");
String sql1="if exists(select * from abc)";
String sql2="drop table abc ";
String sql3="select owners.name as nam,pets.name into abc from owners inner join pets on owners.id=pets.id";
String sql4="select * from abc ";
Statement stmt=data.getConnectin().createStatement();
stmt.addBatch(sql1);
stmt.addBatch(sql2);
stmt.addBatch(sql3);
stmt.addBatch(sql4);
int[] id=stmt.executeBatch();
// System.out.println("长度是"+rs.length);


------解决方案--------------------
建议写个存储过程吧,然后在jdbc里直接掉一下存储过程。
------解决方案--------------------
给你个我以前写的例子
1.oracle表及存储过程
BatchFile code
--Author bluedn--Description 测试Java 调用Oracle 存储过程返回值-- 返回列表 建一个程序包create or replace package Pack_Schlist is  type Sch_Cursor is ref cursor;end Pack_Schlist;--它是把游标(可以理解为一个指针),作为一个out 参数来返回值的create or replace procedure Proc_SearchResultList(p_CURSOR out Pack_Schlist.Sch_Cursor) isbegin  open p_CURSOR for select * from Proc_Table;end Proc_SearchResultList;-- Create Proc_SearchResultOne 有返回值的存储过程(非列表)create or replace procedure Proc_SearchResultOne(PARA1 in VARCHAR2, PARA2 out VARCHAR2) Asbegin  select name into PARA2 from Proc_Table where ID = PARA1;end Proc_SearchResultOne;-- Create Proc_Insert  插入数据:无返回值的存储过程create or replace procedure Proc_Insert(ID in varchar2, Name in varchar2) isbegin  insert into PROC_TABLE(ID,NAME) VALUES (ID,Name);end Proc_Insert;-- Create tablecreate table PROC_TABLE(  ID   VARCHAR2(100),  NAME VARCHAR2(100))tablespace USERS  pctfree 10  pctused 40  initrans 1  maxtrans 255  storage  (    initial 64K    minextents 1    maxextents unlimited  );
------解决方案--------------------
存储过程在sql里直接建立的,
create procedure pNew
@para1 varchar(255),
@para2 int output
AS
declare @strSQL nvarchar(4000)

begin
--执行过程
end

------解决方案--------------------
结题,给分吧,谢谢
------解决方案--------------------
写存储过程上面的都说了,
但有一点建议:要先在查询分析器写好代码测试,不要直接在JAVA里面测试
  相关解决方案