sql >> Databáze >  >> RDS >> Oracle

Proč tato uložená procedura vkládá hodnoty NULL do tabulky?

Chcete-li odpovědět na vaši otázku, proč vkládá hodnoty null, je to proto, že nezadáváte žádné hodnoty parametrům procedury, když ji spouštíte.

Na základě toho, co jste uvedli v otázce a vašem komentáři výše, se zdá, že vám chybí některé základní dovednosti při práci s Oracle. Kód, který jste napsali, je procedura, nikoli funkce, takže jej nemůžete volat v SELECT tvrzení. Uvnitř bloku plsql se volá procedura. Vaše procedura tak, jak je napsána, má dva argumenty, které musíte předat volání procedury prostřednictvím volajícího kódu. Kód procedury, který jste napsali, nehledá data z XML_HOURS_LOAD tabulka.

Všichni jsme byli novým člověkem, který se učí Oracle. Budete se chtít podívat na několik výukových programů, které vám pomohou začít se základy kódování pl/sql, které vám pomohou objasnit rozdíly mezi funkcemi a uloženými procedurami a jak používat argumenty parametrů.

Z toho, co jste napsali ve své otázce, se domnívám, že toto je kód, který chcete:

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. spustit uloženou proceduru ve skriptu aplikací Google

  2. Jak uložit výsledek funkce, která vrátí sysrefcursor?

  3. SQL Developer se nespustí

  4. Mohu použít sloupec, který jsem později v dotazu vybral?