как добавить столбец и заполнить его значением в хранимой процедуре оракула - PullRequest
0 голосов
/ 07 июня 2018

У меня есть задание на учебу, в котором говорится, что нужно создать процедуру, которая добавляет новый столбец «BRUTTO» в таблицу и заполняет ее записи значениями на основе определенной переменной = 24 и значениями из столбца «NETTO».Я написал это, но это не работает.Любая помощь приветствуется.

CREATE OR REPLACE PROCEDURE WSTAW_KOLUMNE_BRUTTO  
AS  
   CURSOR C IS   
     SELECT NETTO  
     FROM TABELA_1  
     FOR UPDATE
     ;
     V_VAT NUMBER(9,2) := 24;
BEGIN
    EXECUTE IMMEDIATE 'ALTER TABLE TABELA_1 ADD BRUTTO NUMBER';
    FOR V_REKORD IN C
    LOOP
       EXECUTE IMMEDIATE 'UPDATE TABELA_1 SET BRUTTO = ' 
           || V_REKORD.NETTO * (1 + 24/100)||' WHERE CURRENT OF C';
    END LOOP;
END WSTAW_KOLUMNE_BRUTTO;

1 Ответ

0 голосов
/ 07 июня 2018

Я бы переписал это как:

CREATE OR REPLACE PROCEDURE WSTAW_KOLUMNE_BRUTTO  
AS  
    V_VAT NUMBER(9,2) := 24;  -- maybe this should be parameter?
BEGIN
   -- how about adding check if column already exists?
   EXECUTE IMMEDIATE 'ALTER TABLE TABELA_1 ADD BRUTTO NUMBER';

   EXECUTE IMMEDIATE 
       'UPDATE TABELA_1 SET BRUTTO = NETTO * (1 + :1 /100)' USING  V_VAT;
END WSTAW_KOLUMNE_BRUTTO;

DBFiddle Demo

...