基于日期的选择查询不在游标内部工作

时间:2018-03-07 21:30:35

标签: oracle plsql cursor

我正在处理一个存储过程,该过程在游标内部具有以下基于日期的选择查询,如下面的

CURSOR inv_cur ( v_hotel_id IN NUMBER, v_stay_date IN DATE)
  IS
    SELECT id,
      start_date ,
      room_count ,
      booked_room_count
    FROM inventory
    WHERE hotel_id          = v_hotel_id
    AND TRUNC( start_date ) = TRUNC(v_stay_date);

由于某种原因,它不起作用,我没有得到记录。但是当我在没有日期比较的情况下执行或者以下面的独立方式执行查询时,它可以正常工作

SELECT id,
      start_date ,
      room_count ,
      booked_room_count
    FROM inventory
    WHERE hotel_id          = 1509622
    AND TRUNC( start_date ) = TO_DATE('08-03-18', 'dd-mm-yy');

这是我调用游标调用的方式

    PROCEDURE (.....)
     IS
     v_date_temp DATE;
     BEGIN
    v_date_temp          := p_check_in_date;
     FOR inventory_rec IN inv_cur
        (
          v_hotel_id, v_room_type_id, v_date_temp
        )
LOOP
      v_room_count      := inventory_rec.room_count;
      v_book_room_count := NVL ( inventory_rec.booked_room_count,0 );
      v_inventory_id    := inventory_rec.id;
      dbms_output.put_line(' Inv id' || v_inventory_id);
    END LOOP;

由于没有返回记录,因此它不会进入循环内部。 我认为日期比较有问题。有人能帮助我弄清楚这个令人费解的问题与我的日期比较吗?

0 个答案:

没有答案