2017-09-13 89 views
1

當我嘗試在TOAD中的sql中運行以下代碼時,我收到了「PLS-00428:在此SELECT語句中需要INTO子句」。我需要能夠在代碼的開頭聲明日期變量,因爲它在我運行報表時會改變。如何在oracle中使用toad聲明日期變量

declare 
report_date date; 
begin 
report_date := to_date('09/12/2017','mm/dd/yyyy'); 
    SELECT IDMOWNER.INDX_WT.ISSUE_NM, 
      IDMOWNER.INDX_WT.SEDOL_ID, 
      IDMOWNER.INDX_WT.ISSUE_SYM_ID,   
      IDMOWNER.INDX_WT.ISSUE_ID 
    FROM IDMOWNER.INDX_WT 
    WHERE (((IDMOWNER.INDX_WT.RPT_DT) = TO_DATE (report_date, 'mm/dd/yyyy')) 
      AND ((IDMOWNER.INDX_WT.INDX_SRC_CD) = 'SOD') 
      AND ((IDMOWNER.INDX_WT.INDX_SYM_TX) = 'NQSSFB')) 
ORDER BY IDMOWNER.INDX_WT.RPT_DT, 
      IDMOWNER.INDX_WT.ISSUE_SYM_ID, 
      IDMOWNER.INDX_WT.MKT_VALUE_AM DESC;  
end; 
+0

聲明日期變量是不是你的問題。 ''在'FROM'之前需要'進入variable_list ...'。 –

+0

[PLS-00428:在此SELECT語句中預期有INTO子句]的可能重複(https://stackoverflow.com/questions/25486543/pls-00428-an-into-clause-is-expected-in-this- select語句) –

回答

0

如果你只是想運行此查詢並獲得輸出,一個PL/SQL塊可能不是你的最佳選擇。我認爲你的問題實際上是a duplicate of this one

我建議使用一個替代變量,就像這樣:

def report_date = '09/12/2017' 

SELECT IDMOWNER.INDX_WT.ISSUE_NM, 
     IDMOWNER.INDX_WT.SEDOL_ID, 
     IDMOWNER.INDX_WT.ISSUE_SYM_ID,   
     IDMOWNER.INDX_WT.ISSUE_ID 
    FROM IDMOWNER.INDX_WT 
WHERE (((IDMOWNER.INDX_WT.RPT_DT) = TO_DATE (&report_date, 'mm/dd/yyyy')) 
      AND ((IDMOWNER.INDX_WT.INDX_SRC_CD) = 'SOD') 
      AND ((IDMOWNER.INDX_WT.INDX_SYM_TX) = 'NQSSFB')) 
ORDER BY IDMOWNER.INDX_WT.RPT_DT, 
      IDMOWNER.INDX_WT.ISSUE_SYM_ID, 
      IDMOWNER.INDX_WT.MKT_VALUE_AM DESC;