2017-02-22 14 views
-2

我試圖使用Oracle日期變量,我寫了一個簡單的聲明,但它不工作,任何人都可以幫我解決這個問題,THX如何在Oracle PL/SQL中使用可變因素

弗蘭克

Declare 
StartDate Date := to_date('03/11/2017', 'dd/mm/yyyy'); 
Begin 
SELECT 
    REQUESTED_DATE.CALENDAR_DATE, 
    Count(distinct FD_DW.SALES_HEADER_FACT.SALE_ID) INTO StartDate 
FROM 
    FD_DW.DATE_DIM REQUESTED_DATE, 
    FD_DW.SALES_HEADER_FACT 
WHERE 
    (REQUESTED_DATE.DATE_KEY=FD_DW.SALES_HEADER_FACT.REQUESTED_DATE_KEY ) 
    AND 
    REQUESTED_DATE.CALENDAR_DATE = StartDate 
GROUP BY 
    REQUESTED_DATE.CALENDAR_DATE; 
End; 

錯誤消息: enter image description here

+0

我不是確定你可以在同一個語句中讀寫相同的變量。那真的是你的意圖嗎? –

+0

這個變量試圖做什麼?順便說一句,錯誤說,你不能從兩列中取值到一個變量。 –

+5

您試圖將兩列的值壓縮到一個變量中,從而導致錯誤。 SELECT語句中必須有許多變量與許多列(文字)一起指定。 –

回答

1

試試這個

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; 
+0

非常感謝,仍然不適合我,因爲我只有讀取數據庫的權限? –

+0

我編輯了我的答案 – sqlandplsql