从动态生成的PL / SQL表中检索数据

时间:2015-04-17 18:02:53

标签: sql oracle

我一直在尝试检索一些每日生成的数据,但我无法弄清楚如何在FROM子句(Oracle db)中动态设置每日创建的表名。每天都会生成一个新表,其中日期戳作为表名的一部分。这将用于每日安排的报告中,该报告必须始终从当天的表中提取(即今天的表名=“STATDB01.A150417001_AINF”,其中“150417”是当前日期)。如何在不必每天更新查询的情况下从新的每日表中检索数据?

我可以在SELECT语句中动态创建新的表格,但我无法在FROM语句中使用它。

这是我的疑问:

SELECT
    sta.statist  “Stats”
    ,sta.indept   “Department”
    ,sta.ondate   “Date”
    ,sta.skitem   “SKU”
    --< I can get this to work in the SELECT clause >--
    ,'STATDB01.A'||TO_CHAR(SYSDATE, 'YYMMDD')||'001_AINF' “New Table”

FROM
    --< Calling the table directly works fine >--
    --STATDB01.A150417001_AINF sta
    --< but this does not work in the FROM clause >--
    'STATDB01.A'||TO_CHAR(SYSDATE, 'YYMMDD')||'001_AINF'

WHERE
    sta.run_stat LIKE '%341%'

ORDER BY 
    sta.elap_time
;

1 个答案:

答案 0 :(得分:1)

您可以在PL / sql中编写(某些部分)报表,将查询(包括当天的表名)构建到字符串变量中,然后使用{{3}运行查询字符串}。

或者,您可以编写一个shell脚本并让它输出带有当天表名的查询,然后将其(如果需要,然后将其提供到文件中)到sqlplus

修改:根据请求,EXECUTE IMMEDIATE {{1}}正在投放。