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;