sql >> Database teknologi >  >> RDS >> Oracle

Hvorfor indsætter denne lagrede procedure NULL-værdier i tabellen?

For at besvare dit spørgsmål om, hvorfor det indsætter nuller, er det fordi du ikke angiver nogen værdier til procedureparametrene, når du udfører det.

Baseret på det, du sagde i spørgsmålet og din kommentar ovenfor, ser det ud til, at du mangler nogle grundlæggende færdigheder i arbejdet med Oracle. Koden du skrev er en procedure, ikke en funktion, så du kan ikke kalde den i en SELECT udmelding. En procedure kaldes inde i en plsql-blok. Din procedure som skrevet tager to argumenter, som du skal videregive til procedurekaldet via kaldekoden. Den procedurekode, du skrev, leder ikke efter data fra XML_HOURS_LOAD tabel.

Vi har alle været den nye person, der lærer Oracle. Du vil gerne se på nogle tutorials for at komme i gang med det grundlæggende i pl/sql-kodning for at hjælpe med at afklare forskellene mellem funktioner og lagrede procedurer, og hvordan du bruger parameterargumenter.

Ud fra det, du skrev i dit spørgsmål, tror jeg, at dette er den kode, du ønsker:

DECLARE
   p_code IS XML_HOURS_LOAD.code%TYPE,
   p_product IS XML_HOURS_LOAD.product%TYPE;
   CURSOR cXmlHoursLoadCursor IS (SELECT code, product FROM xml_hours_load); --You can add a WHERE condition to this cursor query
BEGIN
    FOR v IN cXmlHoursLoadCursor LOOP
       Cascade_Load(v.code, v.product);
       COMMIT; --I recommend calling commit here instead of inside your stored procedure so that the calling code has control of the transaction state
    END LOOP;
END;



  1. Sådan viser du de aktuelle Dot-kommandoindstillinger i SQLite

  2. ved hjælp af nuller i en mysqli udarbejdet erklæring

  3. Hvad er PDO-ækvivalenten til funktionen mysql_real_escape_string?

  4. Hvordan bruger man strftime og datetime korrekt ved hjælp af Room library?