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

帮我看看这个存储过程哪错了?
create or replace procedure yyp_wbcf(dhhm varchar,cxjg out varchar) is
v_count number;
name varchar(20);
qf number;
begin
  select count(*) into v_count from yxv_csy where YX_SJ=dhhm;
  if v_count=0 then
  select count(*) into v_count from yxv_csy where yx_lxdh=dhhm;
  if v_count=1 then
  select yx_yfmc into name from yxv_csy where yx_lxdh=dhhm;
  select qf_ze into qf from yxv_csy_yjsfze where yx_lxdh=dhhm;
  cxjg := '';
  else
  select sum(qf_ze) into qf from yxv_csy where yx_sj=dhhm;
  cxjg := '';
  end if
  else
  if v_count=1 then
  select yx_yfmc into name from yxv_csy where yx_sj=dhhm;
  select qf_ze into qf from yxv_csy where yx_sj=dhhm;
  cxjg := '';
  else
  select sum(qf_ze) into qf from yxv_csy where yx_sj=dhhm;
  cxjg := '';
  end if
  end if;
end yyp_wbcf;

报这个错:
Compilation errors for PROCEDURE YX_GLXT.YYP_WBCF

Error: PLS-00103: Encountered the symbol "ELSE" when expecting one of the following:
   
  ;
  The symbol ";" was substituted for "ELSE" to continue.
Line: 19
Text: else

Error: PLS-00103: Encountered the symbol "END" when expecting one of the following:
   
  ;
  The symbol ";" was substituted for "END" to continue.
Line: 30
Text: end if;




------解决方案--------------------
分号忘加了!
create or replace procedure yyp_wbcf(dhhm varchar,cxjg out varchar) is
v_count number;
name varchar(20);
qf number;
begin
select count(*) into v_count from yxv_csy where YX_SJ=dhhm;
if v_count=0 then
select count(*) into v_count from yxv_csy where yx_lxdh=dhhm;
if v_count=1 then
select yx_yfmc into name from yxv_csy where yx_lxdh=dhhm;
select qf_ze into qf from yxv_csy_yjsfze where yx_lxdh=dhhm;
cxjg := '';
else
select sum(qf_ze) into qf from yxv_csy where yx_sj=dhhm;
cxjg := '';
end if;
else
if v_count=1 then
select yx_yfmc into name from yxv_csy where yx_sj=dhhm;
select qf_ze into qf from yxv_csy where yx_sj=dhhm;
cxjg := '';
else
select sum(qf_ze) into qf from yxv_csy where yx_sj=dhhm;
cxjg := '';
end if;
end if;
end yyp_wbcf;