如何在PL SQL中使用INSERT INTO SELECT添加日期?

Axe*_*tad 0 plsql oracle11g oracle-sqldeveloper

对于我的作业,我需要创建一个包含一个过程的包,该过程从表dwdimartist中删除所有记录,然后用表格艺术家的所有记录填充表格,并添加一个具有今天日期的字段.

这就是我创造的,它有效,但我不知道它是否具有足够的性能.使用循环遍历表艺术家中每条记录的游标是否更好?

CREATE OR REPLACE PACKAGE BODY dwh AS  

  PROCEDURE filldwh IS
    today_date DATE := SYSDATE;
  BEGIN
    DELETE FROM dwdimartist;

    INSERT INTO dwdimartist (artistkey, name) (SELECT artistid, name FROM artist);
    UPDATE dwdimartist SET added = today_date;
  END filldwh;
END dwh;
Run Code Online (Sandbox Code Playgroud)

J. *_*mel 5

像你这样的简单SQL查询比光标或隐式循环更好.

可能的改进: 您应该在没有更新的情况下立即执行:在插入期间设置日期.

INSERT INTO dwdimartist (artistkey, name, added) 
  (SELECT artistid, name, sysdate FROM artist);
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你