Вставить в таблицу, выбрав все из другого, а когда утверждение истинно, изменить значение в PL / SQL - PullRequest
0 голосов
/ 19 октября 2018

Итак, я хотел бы взять значения таблицы (все они), вставить их в новую, а когда она встретит любое значение, идентификатор статьи (sa.art_ident) заменит его словом bighead иsa.art_moddate заменить текущим системным временем.Всякий раз, когда я пытаюсь запустить его, он говорит мне пропустить правильную скобку ... Пожалуйста, помогите

PROCEDURE p_copier_one IS

     BEGIN
    INSERT INTO article_new
      (
        SELECT * FROM article_old sa
          CASE 
            WHEN sa.art_ident='%' THEN
            sa.art_ident = 'Bighead'
          END
        CASE
          WHEN sa.art_moddate='%' THEN
          sa.art_moddate = to_date(
                           '02/04/2012' 
                           ,'DD/MM/YYYY')
                           ,trunc(SYSDATE)

         END
          );



END p_copier_one;

1 Ответ

0 голосов
/ 19 октября 2018

Добро пожаловать на SO.Вам нужно будет сделать что-то, как показано ниже.Читайте мои комментарии в строке.

CREATE OR REPLACE PROCEDURE p_copier_one
IS
BEGIN
  ---List down all your columns here. Although its option to mention your table column but its good practise. 
    INSERT INTO article_new (
        col1,
        col2,
        col3,
        col4,
        col5
    )
        SELECT col1,
               col2,
               --Put your case here
               CASE
                WHEN sa.art_ident = '%' THEN 'Bighead'
               END   col3,
               CASE
                WHEN sa.art_moddate = '%' THEN TO_DATE('02/04/2012','DD/MM/YYYY')
               END   col4,
               trunc(SYSDATE) col5
        FROM article_old sa;
COMMIT;        
END;
...