如何在Oracle PL/SQL中使用变量

如何在Oracle PL/SQL中使用变量,oracle,plsql,Oracle,Plsql,我试图在Oracle中使用date变量,我写了一个简单的语句,但它不起作用,有人能帮我解决这个问题吗,thx 坦率的 错误消息: 试试这个 declare StartDate Date := to_date('03/11/2017', 'dd/mm/yyyy'); n_count integer; begin select cnt INTO n_count from ( SELECT REQUESTED_DATE.CALENDAR_DATE, Count( di

我试图在Oracle中使用date变量,我写了一个简单的语句,但它不起作用,有人能帮我解决这个问题吗,thx

坦率的

错误消息: 试试这个

declare 
    StartDate Date := to_date('03/11/2017', 'dd/mm/yyyy');
    n_count integer; 
begin
select cnt INTO n_count from
( 
SELECT 
  REQUESTED_DATE.CALENDAR_DATE, 
  Count( distinct HEADER_FACT.SALE_ID) as cnt
FROM
  FD_DW.DATE_DIM          REQUESTED_DATE,
  FD_DW.SALES_HEADER_FACT HEADER_FACT
WHERE
  REQUESTED_DATE.DATE_KEY = HEADER_FACT.REQUESTED_DATE_KEY  and
  REQUESTED_DATE.CALENDAR_DATE  = StartDate
GROUP BY REQUESTED_DATE.CALENDAR_DATE
)
;
end;

我不确定你能否在同一条语句中读写同一个变量。这真的是你的意图吗?你想用这个变量做什么?顺便说一句,错误是,您无法将两列中的值提取到单个变量中。您试图将两列中的值压缩到一个变量中,从而导致错误。变量的数量必须与
SELECT
语句中指定的列(文字)的数量相同。如果我只有只读访问权限,那么我就不能写入变量,对吗?非常感谢,仍然不适合我,因为我只有对数据库的只读访问权限???
declare 
    StartDate Date := to_date('03/11/2017', 'dd/mm/yyyy');
    n_count integer; 
begin
select cnt INTO n_count from
( 
SELECT 
  REQUESTED_DATE.CALENDAR_DATE, 
  Count( distinct HEADER_FACT.SALE_ID) as cnt
FROM
  FD_DW.DATE_DIM          REQUESTED_DATE,
  FD_DW.SALES_HEADER_FACT HEADER_FACT
WHERE
  REQUESTED_DATE.DATE_KEY = HEADER_FACT.REQUESTED_DATE_KEY  and
  REQUESTED_DATE.CALENDAR_DATE  = StartDate
GROUP BY REQUESTED_DATE.CALENDAR_DATE
)
;
end;