使用Oracle创建过程

时间:2018-11-29 15:55:45

标签: sql oracle plsql

我试图每周在Oracle中完成一份工作(ORACLE SHEDULER)。

重点是每周循环遍历“ Historico”表,并检查与该链接相关的每个“ ID_Academista” “ Academista”表。之后,应该比较“ Valor_Atual”以查看其> 20(来自表“ Tecnologia”)

如果是,则减1,否则不减。

用更好的英语来说:每个“ Tecnologia”都是一项技术,每种技术都有各自的等级(Valor_Atual) 那将在“ Academista”(学生)内部

Table Historico Database

这是代码:

KeyError(key)

Errors

1 个答案:

答案 0 :(得分:0)

在没有变量的pl / sql块中不能使用selects。

CREATE OR REPLACE PROCEDURE notas
  IS
    contar INTEGER := 0;
    contar2 INTEGER;

    h_var HISTORICO%rowtype;

BEGIN

  SELECT COUNT(*) INTO contar2 FROM Academista;

  WHILE contar <= contar2 
    LOOP

    SELECT  h.* into h_var FROM  HISTORICO h
  WHERE  h.Id_academista = contar ;


       IF 
           h_var.Valor_Atual > 20
    THEN
          UPDATE HISTORICO 
             SET Valor_Atual = Valor_Atual + 1
              WHERE h_var.Id_academista = contar;

          ELSE
              UPDATE HISTORICO 
                SET Valor_Atual = Valor_Atual - 1
                  WHERE h_var.Id_academista = contar ;   

                  SET contar := contar + 1;

           END IF;   

    END LOOP; 

END;