sql >> データベース >  >> RDS >> Oracle

このストアドプロシージャがNULL値をテーブルに挿入するのはなぜですか?

    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;
    



    1. MariaDBにテーブルが存在するかどうかを確認する4つの方法

    2. Hibernate_sequenceテーブルが生成されます

    3. PostgreSQLでテーブルを参照するすべてのストアドプロシージャを一覧表示する3つの方法

    4. Postgres IP(inet)がIP範囲のリストにあるかどうかを確認します