sql >> Database >  >> RDS >> Oracle

Activeer het selecteren van onderliggende records, vermenigvuldigen van hun waarden en bijwerken van bovenliggende records

Je hebt verschillende problemen, maar de meest fundamentele is dat je dit helemaal niet zou moeten doen. Proberen om een ​​waarde op te slaan - en synchroon te houden - die altijd kan worden berekend, is een fundamentele ontwerpfout.

Nu, naar de code zelf.Je hebt

SELECT SUM(VALUE) into product

Het doel van uw INTO moet een gedeclareerde variabele zijn. Het lijkt erop dat u .. INTO een kolomnaam probeert te SELECTEREN.

U moet lokale variabelen een naam geven om onderscheid te maken tussen de kolomnamen. Dus in plaats van

DECLARE
value number;
amount number;
total number;

Je zou moeten hebben

DECLARE
v_value number;
v_amount number;
v_total number;

Omgekeerd moet u nadenken over standaard naamgevingsconventies voor uw tabellen en kolommen. Voor kolommen gebruik en adviseer ik namen in de vorm van , dus ORDER_ID, PRODUCT_NAME, etc. Wat is dit met PRODUCT_ID_PRODUCT, ORDER_ID_ORDER ? Het herhalen van de tabelnaam in de kolomnamen is meestal niet gunstig. Hoewel het soms logisch is omdat het nog steeds het adjective_noun-formaat volgt, zoals de id-kolom van de ORDERS-tabel met de naam ORDER_ID. Denk ook aan tabelnamen, ik maak meestal van mijn tabelnamen een meervoudig zelfstandig naamwoord omdat tabellen meerdere instanties van een entiteit volgen. Als de tabelnaam zinvol is voor een kolomnaam (zoals ORDER_ID), zou deze in het enkelvoud staan, omdat een afzonderlijke rij een enkele instantie van de entiteit bijhoudt.

Ten slotte is het moeilijk om codering aan te bevelen zonder de tabellen te kennen. Je hebt er een vage beschrijving van gegeven, maar het is beter om alles op tafel te leggen. Zie minimal-reproducible-example



  1. MySQL - Persistente verbinding versus pooling van verbindingen

  2. PHP PDO voorbereide verklaring -- MySQL LIKE query

  3. Hoe kan ik een Oracle-functie uitvoeren vanuit een LINQ-expressie in Entity Framework 4?

  4. Een DBF-bestand importeren in SQL Server