2017-03-01 8 views
0

pl/sqlプロシージャを使用してデータベースから選択行を削除する必要があります。しかしwhere句に関係なく、すべての行が削除されます。pl/sqlプロシージャで完全なテーブルを削除して削除する:ORACLE

The student table is:- 
    id name  class 
    1 danial  9 
    2 patrick  9 
    3 paul   8 

      create or replace procedure delete_student (stId in NUMBER) 
      begin 
        delete from students where class = stId; 
        commit; 
      end; 

私は、この手順をjsfアプリケーションからの送信、たとえば9引数として呼び出します。ただし、このプロシージャでは、DBMS_OUTコンソールで正しく出力されるstId引数の値に関係なく、student表の3つの行がすべて削除されます。私は間違って何をしていますか?

+0

本当にあなたは渡していますか?渡された値をどこかに記録しようとしましたか? – Hawk

+0

はい100%。 8を送信したときに9と8を送信すると9が印刷されますが、8または9.iのいずれの場合でも手順3ではすべての行が削除され、すべての行が削除されます。 – jaykio77

+1

これは面白いです、私はあなたのケースを複製できませんでした。他のステートメントが実行されている場合を除いて(すべての行を削除してはいけません)私はまた、テーブルにトリガがあるかどうかを確認するか、よりエキスパートな入力を待つ – Hawk

答えて

0

パラメータの名前はテーブル内の列の名前と一致しますか?

接頭辞(p_、v_など)を持つパラメータと変数を指定して、列名と変数/パラメータ名を区別する際にSQL文が明確になるようにすることをお勧めします。

+0

さん、それは私が直面している行動が本当ではないことを意味します。私のpl/sqlプロシージャは、パラメータ全体ではなく、テーブル全体を削除する必要があることを意味しますか?実際にそうではありません。 – jaykio77

+0

提案したスクリーンショットを表示できますか? – BobC

+0

この回答はコメントでなければなりません。 – Nitish

関連する問題