を使用していますPROCです。あなたは、同時に行を更新または挿入するためにMERGEを使用することができます。
merge into Emp_Sal e
using (
/* your values to insert/update */
select 2 as Empid, 'c' as Fmdt, 100 as Bp from dual
) x
on (e.Empid = x.Empid And e.Fmdt = x.Fmdt)
when matched
then /* if a record exists, update */
update set Basicpay = Bp
when not matched
then /* it the record does not exist, insert */
insert values (x.empid, x.fmdt, x.Bp)
もちろん、あなたの入力パラメータを処理したり、あなたの手順で実行する必要があり何でもするプロシージャの内部にこれを使用することができます。
Create Or Replace Procedure sal_proc(Empid Varchar2,Fmdt Date,bp Number)
As
Begin
merge into Emp_Sal e
using (
/* your values to insert/update */
select Empid as Empid, Fmdt as Fmdt, bp as Bp from dual
) x
on (e.Empid = x.Empid And e.Fmdt = x.Fmdt)
when matched
then /* if a record exists, update */
update set Basicpay = Bp
when not matched
then /* it the record does not exist, insert */
insert (empid,fmdt,Basicpay) values (x.empid, x.fmdt, x.Bp);
End;
ヒント:使用パラメータに混乱を避けるために異なるフロンカラム名を付けます。良い例としては、p_XXX
のようなパラメータ名を使うことができます。これがいかに危険なのほんの一例:
SQL> create or replace procedure checkPar(n in number) is
2 c number;
3 begin
4 select count(1)
5 into c
6 from checkTab
7 where n = n;
8 --
9 dbms_output.put_line(c);
10 end;
11/
Procedure created.
SQL> select * from checkTab;
N
----------
1
2
3
SQL> exec checkPar(1);
3
PL/SQL procedure successfully completed.
SQL> exec checkPar(999);
3
PL/SQL procedure successfully completed.
に存在しない場合は動作するはずです – Abhishek
表示されているように、これをこの手順で簡単に使用できます。 – Aleksej
私は実行しようとしています。私は返信して戻ってきます。助けてくれてありがとうございます – Abhishek