2017-09-13 47 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;