sql >> Databasteknik >  >> RDS >> Oracle

Aktivera val av underordnade poster, multiplicera deras värden och uppdatering av överordnad post

Du har flera problem, men den mest grundläggande är att du inte ska göra det här alls. Att försöka lagra - och hålla synkroniserat - ett värde som alltid kan beräknas är ett grundläggande designfel.

Nu till själva koden. Du har

SELECT SUM(VALUE) into product

Målet för din INTO måste vara en deklarerad variabel. Det verkar som att du försöker VÄLJA .. INTO ett kolumnnamn.

Du bör namnge lokala variabler för att skilja mellan dem och kolumnnamn. Alltså istället för

DECLARE
value number;
amount number;
total number;

Du borde ha

DECLARE
v_value number;
v_amount number;
v_total number;

Omvänt bör du tänka på vanliga namnkonventioner för dina tabeller och kolumner. För kolumner använder och rekommenderar jag namn i form av , alltså ORDER_ID, PRODUCT_NAME, etc. Vad är det här med PRODUCT_ID_PRODUCT, ORDER_ID_ORDER? Att upprepa tabellnamnet i kolumnnamnen är vanligtvis inte fördelaktigt. Även om det finns tillfällen är det vettigt eftersom det fortfarande följer formatet adjective_noun, som id-kolumnen i ORDERS-tabellen som heter ORDER_ID. Tänk också på tabellnamn, jag brukar göra mina tabellnamn till ett pluralsubstantiv eftersom tabeller spårar flera instanser av någon enhet. Om tabellnamnet är vettigt för ett kolumnnamn (som ORDER_ID) skulle det vara singulart, eftersom en enskild rad spårar en enda instans av entiteten.

Slutligen är det svårt att rekommendera kodändring utan att känna till tabellerna. Du har gett en vag beskrivning av dem, men bättre att lägga allt på bordet. Se minimal-reproducerbart-exempel



  1. Bind OCI sysdate() till PDO-parametern?

  2. oracle fleranvändarfunktion

  3. JDBI:s @BindBean hittar inte namngivna parametrar i bönklass under INSERT

  4. Löpande summor för flera kategorier i MySQL