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)
像你这样的简单SQL查询比光标或隐式循环更好.
可能的改进: 您应该在没有更新的情况下立即执行:在插入期间设置日期.
INSERT INTO dwdimartist (artistkey, name, added)
(SELECT artistid, name, sysdate FROM artist);
Run Code Online (Sandbox Code Playgroud)
希望能帮助到你