select  sysdate+interval'2' hour from appsys.t_pzbd_time t

解决方案 »

  1.   

    这里直接在plsql执行没问题,问题是现在想把2改成从数据库表中读出来作为参数方式 怎么合成这段查询语句呢
      

  2.   

    用动态sql ,exec immediate
      

  3.   

    create or replace test_proc
    as
    v_date date;
    v_sql varchar2(3000);
    v_argument varchar2(20);
    cursor my_cur is  select hour from your_tab_name;
    begin
    for v_cur in my_cur loop
    v_sql:='select sysdate+interval'||v_cur||' from appsys.t_pzbd_time' into v_argument;
    execute immediate v_sql;
    dbms_output.put_line(v_argument);--v_argument就是interval'2'
    end loop;
    end;
      

  4.   

    其实不用这么麻烦,因为interval'2'是支持*乘法的,可以定个基础时间比如一小时然后n*interval'1' hour,n必须是number类型。谢谢大伙了