日期:2014-05-18  浏览次数:20743 次

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) is
begin
  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) As
begin
  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) is
begin
  insert into PROC_TABLE(ID,NAME) VALUES (ID,Name);
end Proc_Insert;

-- Create table
create 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里面测试