Om uw vraag te beantwoorden waarom het nulls invoegt, dat is omdat u geen waarden aan de procedureparameters verstrekt wanneer u het uitvoert.
Op basis van wat u in de vraag en uw opmerking hierboven hebt vermeld, lijkt het erop dat u een aantal fundamentele vaardigheden mist in het werken met Oracle. De code die je hebt geschreven is een procedure, geen functie, dus je kunt hem niet aanroepen in een SELECT
uitspraak. Een procedure wordt binnen een plsql-blok genoemd. Uw procedure zoals geschreven heeft twee argumenten, die u via de aanroepcode aan de procedureaanroep moet doorgeven. De procedurecode die u schreef, zoekt niet naar gegevens uit de XML_HOURS_LOAD
tafel.
We zijn allemaal de nieuwe persoon geweest die Oracle leerde. U zult enkele tutorials willen bekijken om u op weg te helpen met de grondbeginselen van pl/sql-codering om de verschillen tussen functies en opgeslagen procedures op te helderen en hoe u parameterargumenten gebruikt.
Op basis van wat je in je vraag hebt geschreven, denk ik dat dit de code is die je wilt:
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;