Oracle 声明和使用日期

Oracle declaring and Using Dates

所以我已经使用 SQL Server 大约 7 年了,刚刚换了工作,我们的很多生产资料都在 Oracle SQL Developer 中。第 1 天,不是享受 Oracle,而是抱有最好的希望。

我正在尝试做我认为非常简单和容易的事情,但我发现的所有方法都不起作用。我 运行 下面得到一个错误。

Bind Variable "Startdt" is NOT DECLARED anonymous block completed

我试过用几种不同的方式声明它,包括 Enddt 是怎样的。 DealerNbr 可以正常工作。我从 SSRS 报告中提取的查询本身,但我必须声明变量,以便我可以向它添加 test/add 列。 SSRS 工作正常。

DECLARE 
  DealerNbr NUMBER;
  Startdt DATE;
  Enddt DATE;
BEGIN
  DealerNbr := 18913;
  Startdt   := TO_DATE ('2012-01-01','mm,dd,yyyy');
  Enddt     := '2012-12-31';
END;

select prq_payee_nbr ,
prq_status_cd 
from payable_requisitions 
where prq_payee_nbr = :DealerNbr
and prq_status_cd <> 'V' 
and prq_dt between :Startdt and :Enddt
order by prq_dt

Essential 我只是想做最基本的事情。在 SQL 服务器中它将是:

Declare @DealerNbr Int
,@Startdt date
,@EndDt date

Set @DealerNbr = '18913'
Set @Startdt = '2012-01-01'
Set @Enddt = '2012-12-31'

Select * 
from payable_requistion
where prq_payee_nbr = @DealerNbr
and prq_dt between @Startdt and @EndDt
VARIABLE cur REFCURSOR;
/

DECLARE
  DealerNbr NUMBER := 18913;
  Startdt   DATE   := DATE '2012-01-01';
  Enddt     DATE   := DATE '2012-12-31';
BEGIN
  OPEN :cur FOR
  select prq_payee_nbr ,
         prq_status_cd 
  from   payable_requisitions 
  where  prq_payee_nbr = DealerNbr
  and    prq_status_cd <> 'V' 
  and    prq_dt between Startdt and Enddt
  order by prq_dtl;
END;
/

PRINT cur;

或者

VARIABLE Startdt VARCHAR2;
VARIABLE Enddt VARCHAR2;
VARIABLE DealerNbr NUMBER;

BEGIN
  :DealerNbr := 18913;
  :Startdt   := '2012-01-01';
  :Enddt     := '2012-12-31';
END;
/

select prq_payee_nbr ,
       prq_status_cd 
from   payable_requisitions 
where  prq_payee_nbr = :DealerNbr
and    prq_status_cd <> 'V' 
and    prq_dt between TO_DATE( :Startdt, 'YYYY-MM-DD' )
              and     TO_DATE( :Enddt,   'YYYY-MM-DD' )
order by prq_dtl;