КУРСОР ДЛЯ ПЕТЛИ - PullRequest
       5

КУРСОР ДЛЯ ПЕТЛИ

0 голосов
/ 14 декабря 2011

Друзья

Я пишу процедуру, которая делает следующее

1> Вставить все данные, полученные временной таблицей, в основную таблицу. 2 Как только у нас есть данные в основной таблице - умножьте сумму на -1 - Вставьте записи в таблицу TEMP2

Для достижения вышеуказанной задачи

моя процедура выглядит как

CREATE OR REPLACE PROCEDURE MyProcesure(USER        IN VARCHAR2,
                                        VO_ERROR_CODE  OUT NUMBER,
                                        VO_ERROR_DESC  OUT nocopy VARCHAR2) IS

    v_data      VARCHAR2(2000);     

BEGIN


    VO_ERROR_CODE     := 0;
    VO_ERROR_DESC     := 'Success';

-- Insert all the data received by a temp table  into the main table 

INSERT INTO MAIN_TABLE (
COLUMN1,
COLUMN2,
COLUMN3,
COLUMN4)
SELECT M,COL1,
       M.COL2,
       M.COL3,
       M.COL4
FROM TEMP M 
WHERE M.A = VARIABLE1 ; 

-- Once we have the data in the main table 
 - Multiple the amount by -1 
  - Insert the records to TEMP2 Table
FOR v_data in
( SELECT COL1, COL2, COL3, COl4 FROM MAIN TABLE )   

LOOP

    v_data.COL2 := v_data.COL2 * -1 ; 


INSERT INTO TEMP2 
      (       COL1,
          COL2,
          COL3,
          COL4          
      )
    SELECT SELECT M.COL1, M.COL2, M.COL3, M.COl4 FROM MAIN TABLE; 

     GROUP BY M.COL1;

 END;

Я использовал Oracle CURSOR FOR LOOP, пожалуйста, дайте мне знать, если это идеально, или я могу также использовать явный курсор. Спасибо

1 Ответ

2 голосов
/ 15 декабря 2011

Я пытаюсь понять, что вы хотите, но даже синтаксис недопустим ... в этом цикле (чтение в виде псевдокода) вы выполняете повторную вставку всех записей в таблицу temp2 для "каждой" записи в main_table, поэтому в основном вы умножаете записи ...

Полагаю, вы хотите умножить данные COL2 на -1, так что вы должны удалить цикл и просто поставить

ВСТАВИТЬ В ТЕМП 2 (COL1, COL2, COL3, COL4) ВЫБЕРИТЕ M.COL1, M.COL2 * -1, M.COL3, M.COl4 ИЗ MAIN_TABLE;

Кроме того, проверьте, что вы хотите с этим GROUP BY M.COL1 там.

НО прежде всего вам следует изучить синтаксис pl / sql и его основные понятия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...