nullを挿入する理由についての質問に答えるには、実行時にプロシージャパラメータに値を指定しないためです。
上記の質問とコメントに基づいて、Oracleを使用する上でいくつかの基本的なスキルが不足しているようです。作成したコードは関数ではなくプロシージャであるため、SELECT
で呼び出すことはできません。 声明。プロシージャは、plsqlブロック内で呼び出されます。記述されたプロシージャは2つの引数を取ります。これらの引数は、呼び出し元のコードを介してプロシージャ呼び出しに渡す必要があります。作成したプロシージャコードは、XML_HOURS_LOAD
からデータを検索しません。 テーブル。
私たちは皆、オラクルを学ぶ新しい人です。関数とストアドプロシージャの違いとパラメータ引数の使用方法を明確にするために、pl/sqlコーディングの基礎を理解するためのチュートリアルをいくつか見ておくことをお勧めします。
あなたがあなたの質問に書いたことから、私はこれがあなたが望むコードであると信じています:
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;