Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Dlaczego ta procedura składowana wstawia do tabeli wartości NULL?

Aby odpowiedzieć na pytanie, dlaczego wstawia wartości null, oznacza to, że nie podajesz żadnych wartości parametrów procedury podczas jej wykonywania.

W oparciu o to, co napisałeś w pytaniu i Twój komentarz powyżej, wydaje się, że brakuje Ci podstawowych umiejętności w pracy z Oracle. Napisany przez Ciebie kod jest procedurą, a nie funkcją, więc nie możesz wywołać go w SELECT oświadczenie. Procedura jest wywoływana wewnątrz bloku plsql. Twoja procedura w formie pisemnej wymaga dwóch argumentów, które musisz przekazać do wywołania procedury za pomocą kodu wywołującego. Napisany przez Ciebie kod procedury nie szuka danych z XML_HOURS_LOAD tabeli.

Wszyscy byliśmy nową osobą uczącą się Oracle. Będziesz chciał zajrzeć do kilku samouczków, aby rozpocząć naukę podstaw kodowania pl/sql, aby pomóc wyjaśnić różnice między funkcjami i procedurami składowanymi oraz jak używać argumentów parametrów.

Z tego, co napisałeś w swoim pytaniu, uważam, że jest to kod, którego potrzebujesz:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Przejdź przez wszystkie schematy w Talend

  2. Czy w klastrze Oracle sysdate zawsze zwróci spójną odpowiedź?

  3. Proste zapytanie Oracle:literał nie pasuje do ciągu formatu

  4. Oracle Sql :Procedura, która może tworzyć w niej tymczasowe tabele

  5. Jaka jest podwójna tabela w Oracle?