Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Memicu memilih catatan anak, mengalikan nilainya dan memperbarui catatan induk

Anda memiliki beberapa masalah, tetapi yang paling mendasar adalah Anda tidak boleh melakukan ini sama sekali. Mencoba menyimpan - dan tetap sinkron - nilai yang selalu dapat dihitung adalah cacat desain yang mendasar.

Sekarang, ke kode itu sendiri. Anda memiliki

SELECT SUM(VALUE) into product

Target INTO Anda harus berupa variabel yang dideklarasikan. Sepertinya Anda mencoba SELECT .. INTO nama kolom.

Anda harus memberi nama variabel lokal untuk membedakannya dengan nama kolom. Jadi, alih-alih

DECLARE
value number;
amount number;
total number;

Anda harus memiliki

DECLARE
v_value number;
v_amount number;
v_total number;

Sebaliknya, Anda harus memikirkan konvensi penamaan standar untuk tabel dan kolom Anda. Untuk kolom saya menggunakan dan merekomendasikan nama dalam bentuk , jadi ORDER_ID, PRODUCT_NAME, dll. Ada apa dengan PRODUCT_ID_PRODUCT, ORDER_ID_ORDER ? Mengulangi nama tabel di nama kolom biasanya tidak bermanfaat. Meskipun ada kalanya masuk akal karena masih mengikuti format adjective_noun, seperti kolom id tabel ORDERS yang diberi nama ORDER_ID. Pikirkan tentang nama tabel juga, saya biasanya membuat nama tabel saya menjadi kata benda jamak karena tabel melacak beberapa contoh dari beberapa entitas. Jika nama tabel masuk akal untuk nama kolom (seperti ORDER_ID), itu akan menjadi singular, karena baris individual melacak satu instance entitas.

Terakhir, sulit untuk merekomendasikan modifikasi pengkodean tanpa mengetahui tabelnya. Anda telah memberikan deskripsi yang tidak jelas tentang mereka, tetapi lebih baik meletakkan semuanya di atas meja. Lihat 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. Hibernate tidak dapat mengambil SequenceInformation dari database

  2. Memahami perbedaan antara Tabel dan API Transaksi

  3. Kelas Pool Koneksi Oracle

  4. SEMUA operator VS Apa pun pada kueri kosong

  5. Kolom Pembaruan Oracle LTRIM dan RTRIM