Untuk menjawab pertanyaan Anda tentang mengapa itu memasukkan nol, itu karena Anda tidak memberikan nilai apa pun ke parameter prosedur saat Anda menjalankannya.
Berdasarkan apa yang Anda nyatakan dalam pertanyaan dan komentar Anda di atas, tampaknya Anda kehilangan beberapa keterampilan dasar dalam bekerja dengan Oracle. Kode yang Anda tulis adalah prosedur, bukan fungsi, jadi Anda tidak dapat memanggilnya dalam SELECT
penyataan. Prosedur dipanggil di dalam blok plsql. Prosedur Anda seperti yang tertulis membutuhkan dua argumen, yang harus Anda berikan ke panggilan prosedur melalui kode panggilan. Kode prosedur yang Anda tulis tidak mencari data dari XML_HOURS_LOAD
tabel.
Kita semua adalah orang baru yang mempelajari Oracle. Anda akan ingin melihat beberapa tutorial untuk membantu Anda memulai dasar-dasar pengkodean pl/sql untuk membantu memperjelas perbedaan antara fungsi dan prosedur tersimpan dan cara menggunakan argumen parameter.
Dari apa yang Anda tulis dalam pertanyaan Anda, saya yakin ini adalah kode yang Anda inginkan:
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;