各位大侠: 我写了一个存储过程,代码如下
CREATE OR REPLACE PROCEDURE CMCC.TEST_PROC5(
 stathour in varchar2,
 statdate in varchar2
)IS
  
        begintime  varchar2(17);
endtime    varchar2(17);
        sqlstr     varchar2(4000);
         
BEGINif stathour = '0'
stathour := '00';
if stathour = '1'
  stathour := '01';
if stathour = '2'
  stathour := '02';begintime := statdate || ' ' || stathour || ':00:00';
endtime := statdate || ' ' || stathour || ':59:59';sqlstr := ’具体的查询语句‘;execute immediate sqlstr;
commit;END TEST_PROC5;现在的问题是,编译时,其中的两条if语句老是出错,不知到该怎么办?
我想实现的功能就是,当判断到stathour 的值是0-9之间时,就在前面加上一个0,变成00,01,02等;不知道大家还有其他的办法没有,谢谢了!!

解决方案 »

  1.   

    if语句:
    if  条件 thenelseend if;
    你看看你的IF语句 
      

  2.   

    我把条件判断改成了if stathour = '0'
    then stathour := '00';else 
             stathour := '01';
    end if还是不行啊
      

  3.   

    IF ... THEN
    ELSIF ...
    END IF
      

  4.   

    其实你可以用LPAD函数来实现
    假设你取的数要补足两位
    lpad(stathour ,2,'0')
      

  5.   

    你的传入参数stathour不能被赋值,在里面建个临时变量就好了
      

  6.   

    你可以判断简单点
    length(a)=1就可以了
      

  7.   

    IF   ...   THEN 
    ELSIF   ... 
    END   IF
      

  8.   

    select decode(stathour,'0','00','1','01','2','02') into stathour from dual;
      

  9.   

    select lpad(stathour   ,2,'0') into stathour from dual;