日期:2014-05-17  浏览次数:21112 次

oracle存储过程调用方法
过程定义 ,重要的是(1)输出参数 state 是boolean 怎么用java 设置输出参数
(2) stamt 是记录类型 怎么定义输出参数
create or replace procedure show_insert_check(
movie in movie.id%type,room in room.num%type, 
btime in varchar2,etime in varchar2,
state out BOOLEAN,stmt out show%rowtype)
as 
cursor show_cursor is
select * from show ; 
bdate  date;
edate  date;
begin
  state := false;
  bdate := to_date(btime,'yyyy-mm-dd hh24:mi:ss');
  edate := to_date(etime,'yyyy-mm-dd hh24:mi:ss');
  open show_cursor;
  loop
    fetch show_cursor into stmt;
    if show_cursor%found then
      if movie = stmt.movie and room = stmt.room then
          if (stmt.btime >= bdate and
              stmt.btime < edate or
              stmt.etime >= bdate and 
              stmt.etime < edate  ) or
              (bdate > stmt.btime and
              bdate < stmt.etime or 
              edate > stmt.btime and
              edate < stmt.etime) then
             state := true;
             exit; 
          end if;      --  时间重叠判断
      end if;    -- movie = stmt.id and room = stmt.room
    else    --if show_cursor%found 
     state := false;
     exit;
    end if;--  if show_cursor%found 
  end loop;
  close show_cursor;
end show_insert_check;


请各位前辈帮帮忙
------解决方案--------------------
Boolean要自己改驱动或者获得dump自己写,因为JDBC里没有映射PL/SQL所有基本型。

Recode映射成STRUCT。