Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Wyzwalaj wybieranie rekordów podrzędnych, mnożenie ich wartości i aktualizowanie rekordów nadrzędnych

Masz kilka problemów, ale najbardziej podstawowym jest to, że w ogóle nie powinieneś tego robić. Próba przechowywania – i utrzymywania synchronizacji – wartości, którą zawsze można obliczyć, jest podstawową wadą projektową.

Teraz przejdźmy do samego kodu. Masz

SELECT SUM(VALUE) into product

Cel twojego INTO musi być zadeklarowaną zmienną. Wygląda na to, że próbujesz wybrać .. INTO nazwę kolumny.

Należy nazwać zmienne lokalne, aby odróżnić je od nazw kolumn. Dlatego zamiast

DECLARE
value number;
amount number;
total number;

Powinieneś mieć

DECLARE
v_value number;
v_amount number;
v_total number;

I odwrotnie, powinieneś pomyśleć o standardowych konwencjach nazewnictwa dla tabel i kolumn. W przypadku kolumn używam i polecam nazwy w postaci , czyli ORDER_ID, PRODUCT_NAME itd. Co to jest z PRODUCT_ID_PRODUCT, ORDER_ID_ORDER ? Powtarzanie nazwy tabeli w nazwach kolumn zwykle nie jest korzystne. Chociaż czasami ma to sens, ponieważ nadal ma format rzeczownik_przymiotnikowy, tak jak kolumna identyfikatora w tabeli ORDERS o nazwie ORDER_ID. Pomyśl także o nazwach tabel, zwykle używam nazw tabel jako rzeczowników w liczbie mnogiej, ponieważ tabele śledzą wiele wystąpień jakiejś encji. Jeśli nazwa tabeli ma sens dla nazwy kolumny (np. ORDER_ID), byłaby pojedyncza, ponieważ pojedynczy wiersz śledzi pojedynczą instancję encji.

Wreszcie, trudno zalecić modyfikację kodowania bez znajomości tabel. Podałeś im niejasny opis, ale lepiej połóż wszystko na stole. Zobacz minimal-reproducible-example



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wielokrotna funkcja REPLACE w Oracle

  2. jaki jest lepszy sposób indeksowania danych z tabel Oracle/relacyjnych do elastycznego wyszukiwania?

  3. Dialekt hibernacji dla Oracle 19

  4. Jak usunąć kolumnę z widoku

  5. ORA-06530:Odniesienie do niezainicjowanego kompozytu