如何在oracle中使用toad声明日期变量
问题描述:
当我尝试在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;
答
如果你只是想运行此查询并获得输出,一个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;
声明日期变量是不是你的问题。 ''在'FROM'之前需要'进入variable_list ...'。 –
[PLS-00428:在此SELECT语句中预期有INTO子句]的可能重复(https://*.com/questions/25486543/pls-00428-an-into-clause-is-expected-in-this- select语句) –