Мой запрос прост, но PL/SQL
блок кода ожидает 'INTO'
.Создать 'TABLE AS' в PL/SQL-блоке
Вот мой запрос:
DECLARE
yesterdays_date DATE := SYSDATE-1;
start_date DATE :='01/JAN/2013';
BEGIN
EXECUTE IMMEDIATE 'DROP TABLE P2P_DATA';
EXCEPTION
WHEN OTHERS THEN
IF SQLCODE != -942 THEN
--if table not found DO NOTHING AND MOVE ON
--dbms_output.put_line('HELLO');
NULL;
END IF;
---------------------------create new table here-------------------
CREATE TABLE P2P_DATA AS
SELECT
GM_NAME,
NEW_SKILL,
WEEK_DATE,
TOR_MWF
FROM TEST_TABLE
WHERE WEEK_DATE BETWEEN start_date AND yesterdays_date;
END;
это дает ошибку во время компиляции:
FOUND CREATE: EXPECTING END SELECT or (BEGIN CASE CLOSE CONTINUE DECLARE ... ETC)
Я просто настройка даты в блоке декларации, а затем создать новую таблицу в результате заявление select
. любые идеи, как выполнить эту задачу?
вам нужно будет немедленно выполнить выполнение, чтобы создать таблицу, а также удалить ее. Почему бы просто не усечь стол, а затем вставить в него? Это не SQL-сервер, а при отбрасывании и создании таблиц есть накладные расходы – kevinsky
@kevinsky любой блок кода кода будет оценен – Shery
Я бы просто хотел добавить, я даже не рассматривал бы блок PL/SQL для того, что вы там делаете, вы можете выпустить 'WHENEVER SQLERROR CONTINUE' .. сделайте' DROP', затем выполните 'WHENEVER SQLERROR EXIT sqlcode' ... и выпустите' CREATE' .. с вашими диапазонами дат (переменные здесь действительно не помогают вы много, если не будет намного больше, чем вы показываете?) – Ditto