1. 程式人生 > >寫儲存過程中遇到的問題(一)—— else if和elsif

寫儲存過程中遇到的問題(一)—— else if和elsif

編譯時報錯,然後發現裡面有這麼一段程式碼:

set define off;
declare
  v_nullable varchar(1) := '';
begin

if fc_IsTableExists('TCAPCURRENTS_INPUT') then
if not fc_IsColExists('TCAPCURRENTS_INPUT', 'L_CONTRACTSERIALNO') then 
   if  fc_IsColExists('TCAPCURRENTS_INPUT', 'L_ACCOSERIALNO') then 
	   execute immediate 'alter table TCAPCURRENTS_INPUT add (L_CONTRACTSERIALNO NUMBER(10) )'
; execute immediate 'update TCAPCURRENTS_INPUT set L_CONTRACTSERIALNO= L_ACCOSERIALNO'; execute immediate 'alter table TCAPCURRENTS_INPUT drop column L_ACCOSERIALNO'; end if; else if fc_IsColExists('TCAPCURRENTS_INPUT', 'L_ACCOSERIALNO') then execute immediate 'update TCAPCURRENTS_INPUT set L_CONTRACTSERIALNO= L_ACCOSERIALNO'
; execute immediate 'alter table TCAPCURRENTS_INPUT drop column L_ACCOSERIALNO'; end if; end if; end; / set define on;

問題就是出在了else if這個問題上了。以上指令碼通過儲存過程編譯必然是會報錯的。

解決途徑:
1、比原先多加了一個end if;就可以了

if  then 
	else if then 
	end if;
end    if

2、else if直接改成 elsif 就可以了,也不需要加end if;了。

if  then 
elsif then 
end if