declare
collect_time date:=sysdate;
jieguo number;
begin
execute immediate 'select count(*) from std_fmdb.tfa_alarm_act
WHERE event_time > '||collect_time+||'-1/24 
AND city_name IS NOT NULL
AND org_severity IS NOT NULL
AND professional_type IS NOT NULL
AND vendor_name IS NOT NULL
AND eqp_object_class IN(101,102,130,131,200) ' 
into jieguo;
dbms_output.put_line(jieguo);
end;提示SQL command not properly ended。
应该怎样修改啊?应该是collect_time的问题。collect_time是传入来的参数,不一定是sysdate。

解决方案 »

  1.   

    试一下
    alter session set nls_date_format='yyyy-mm-dd';
    declare
    collect_time date:=sysdate-1/24;
    jieguo number;
    begin
    execute immediate 'select count(*) from std_fmdb.tfa_alarm_act
    WHERE event_time > '''||collect_time||'''
    AND city_name IS NOT NULL
    AND org_severity IS NOT NULL
    AND professional_type IS NOT NULL
    AND vendor_name IS NOT NULL
    AND eqp_object_class IN(101,102,130,131,200) ' 
    into jieguo;
    dbms_output.put_line(jieguo);
    end;
      

  2.   

    WHERE event_time > '||collect_time+||'
    这两个时间现在类型不一样,一个是时间,一个是字符,把它换为时间后再比较
    WHERE event_time > to_date('||collect_time+||','yyyy-mm-dd hh24')
      

  3.   

    alter session set nls_date_format = 'YYYY-MM-DD HH24:MI:SS'