SQL中传入时间参数

adetwo 2009-03-19 02:21:28
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。
...全文
433 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
liulongjin2008 2009-03-19
  • 打赏
  • 举报
回复
alter session set nls_date_format = 'YYYY-MM-DD HH24:MI:SS'
Andy__Huang 2009-03-19
  • 打赏
  • 举报
回复
WHERE event_time > '||collect_time+||'
这两个时间现在类型不一样,一个是时间,一个是字符,把它换为时间后再比较
WHERE event_time > to_date('||collect_time+||','yyyy-mm-dd hh24')
liulongjin2008 2009-03-19
  • 打赏
  • 举报
回复
试一下
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;
adetwo 2009-03-19
  • 打赏
  • 举报
回复
不好意思,没复制好……去掉+号还是不行
Andy__Huang 2009-03-19
  • 打赏
  • 举报
回复
collect_time变量后多"+"

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧