2016-10-12 6 views
0

私は自己学習目的でoracleを使用して給与管理システムを開発しています。 以下は、p_department_id_1およびp_department_id_2がIN型のプロシージャの2つのパラメータである従業員表のデータを更新および挿入するためのストアド・プロシージャのコードのスニペットです。nullでない論理条件を使用できるかキーワード

次のように2行目にエラーが発生しました。私はORをIS NOT NULLで使用できるかどうかわかりません。 ここで私が実際にした間違いは何ですか?

 v_status          :=0; 
     IF p_department_id_1 OR p_department_id_2 IS NOT NULL THEN 
     p_department_id_1       :=NVL(p_department_id_1,p_department_id_2); 
     p_department_id_2       :=NVL(p_department_id_2,p_department_id_1); 
     IF p_department_id_1 AND p_department_id_2 IS NOT NULL THEN 
      SELECT COUNT(*) 
      INTO v_department_count 
      FROM department 
      WHERE department_id =p_department_id_1 
      AND department_id =p_department_id_2; 
      IF v_department_count>0 THEN 
      v_status   :=1; 
      END IF; 
     END IF; 
     ELSE 
     v_status:=1; 
     END IF; 
+0

THEN p_department_id_1がnullでなく、p_department_id_2がnullでない場合、あなたが得るエラーは何ですか? – DCookie

+1

は:p_department_id_1がヌルでないか、p_department_id_2がヌルでない場合 – Jayvee

+0

'p_department_id_1'の論理式があるといいでしょう –

答えて

0

+1

これは同じことではありません。 ORでなければなりません。 – DCookie

+0

私はこれを試しましたが、p_department_id_1とp_department_id_2を代入対象として使用できないというエラーが発生しました – PiyushM

+0

@PiyushM - それは別の行から完全に無関係なエラーです。これらはプロシージャのINパラメータでなければなりません。つまり、その値を変更することはできません。呼び出し元に変更を見たり、ローカル変数を使用させたい場合は、それらを 'IN OUT'にする必要があります。 –

関連する問題