2017-02-22 5 views
-2

Ich versuche, die Datumsvariablen in Oracle, schrieb ich eine einfache Aussage, aber es funktioniert nicht, kann mir jemand helfen, dieses Problem zu beheben, thxWie in Oracle PL/SQL verwenden Zugriffe auf Variablen

Frank

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; 

Fehlermeldung: enter image description here

+0

Versuchen ich bin nicht sicher, dass Sie dieselbe Variable in derselben Anweisung lesen und schreiben können. War das wirklich deine Absicht? –

+0

Was versuchen mit dieser Variable zu tun? BTW, der Fehler sagt, Sie können die Werte aus zwei Spalten nicht in eine einzelne Variable abrufen. –

+5

Sie versuchen, Werte von zwei Spalten in eine Variable zu pressen, also den Fehler. Es müssen so viele Variablen vorhanden sein, wie viele Spalten (Literale) in Ihrer SELECT-Anweisung angegeben sind. –

Antwort

1

diese

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

vielen dank, immer noch nicht für mich arbeiten, weil ich nur gelesen habe nur zugang zu der datenbank ??? –

+0

Ich habe meine Antwort bearbeitet – sqlandplsql

Verwandte Themen