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;
所以我已经使用 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;