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

レコードを削除しないステートメントの削除

    あなたがそれを呼んだらそうなるでしょう、しかし残念ながらあなたはそうしません。

    これはSQLの問題ではなく、論理的な問題です。私たちが洗わないと、皿は汚れたままです。同様に、レコードを削除するルーチンを呼び出さない場合、レコードは削除されません。

    プロシージャで関数を呼び出す必要があります。なぜそれを関数にしたのかわからない、そしてそれはRETURN句を持っていないので、とにかくコンパイルされない。それで、それも修正しましょう。

    CREATE OR REPLACE FUNCTION DELETE_ALL_STUDENTS RETURN NUMBER AS
    BEGIN
        DELETE FROM STUDENTS;
        return sql%rowcount; -- how many rows were deleted
    END;
    /
    

    今ではそれを呼んでいます:

    create or replace PROCEDURE DELETE_ALL_STUDENTS_VIASQLDEV AS
        n number;  
    BEGIN
        dbms_output.put_line('--------------------------------------------');
        dbms_output.put_line('Deleting all student rows');
        n := DELETE_ALL_STUDENTS;
        dbms_output.put_line('No of students deleted = '|| to_char(n));
    END;
    

    したがって、匿名ブロックを実行すると、既存の生徒が削除され、新しい生徒に置き換えられます。




    1. RubyonRailsで実行時にテーブルを作成する

    2. mysqlの結果セットは常にnullです

    3. SQL時間列は昇順でソートされません

    4. 更新時のSQLサーバーは現在のタイムスタンプを設定します