خرید بک لینک

از نسخه های قدیمی 1 امکان استفاده از عبارت RETURNING INTO به همراه دستورات DMLای وجود داشت که در قسمت زیر نحوه استفاده از آن را می بینید:

SQL*Plus: Release 10.1.0.4.2 - Production on Tue Aug 15 14:08:30 2023
SQL> select * from tbl1;
        ID NAME
---------- ----------
         1 Vahid
         2 Usef
SQL>declare
    var_id number;
    var_name varchar2(10);
  begin
  --Update
    update tbl1 set name='ALI' where id=2 returning name into var_name;
   	dbms_output.put_line('After_Update==>' || name='||var_name);
  --Delete
    delete tbl1 where id=1 returning name into var_name;
    dbms_output.put_line('Before_Delete==>' || name='||var_name);
  --Insert	
    insert into tbl1 values(3,'Reza') returning id,name into var_id,var_name;
    	 dbms_output.put_line('INSERT==> id='||var_id||' , name='||var_name);
    commit;
  end;
/        
After_Update==>name=ALI
Before_Delete==> name=Vahid
INSERT==> id=3 , name=Reza
SQL> select * from tbl1;
        ID NAME
---------- ----------
         2 ALI
         3 Reza

در اوراکل 23c بهبودی در این 1 ایجاد شد اوراکل دو عبارت OLD  و  NEW را هم در این زمینه اضافه کرده است برای دستور Update می توان از هر دو عبارت OLD  و  NEW استفاده کرد همچنین عبارت NEW برای دستور Insert و عبارت OLD برای دستور Delete قابل استفاده هستند.

syntax کلی عبارت RETURNING INTO در اوراکل 10g و 23c را در قسمت زیر مشاهده می کنید:

Oracle 10g:
RETURNING <exprs> INTO <data_items>;

Oracle 23c:
( RETURN | RETURNING) ( OLD | NEW )  expr [ , ( OLD | NEW ) expr ]+ INTO  [data_item] ...

مثال زیر را ببنید:

SQL> select * from tbl1;
        ID NAME
---------- ----------
         1 Vahid
         2 Usef
DECLARE
 OLD_Name varchar2(1000);
 NEW_Name varchar2(1000);
 New_Val_id number(10);

BEGIN
--'update'
  update tbl1
     set name = 'ALI'
   where id = 2
  RETURNING OLD name, NEW name INTO OLD_Name, NEW_Name;
  DBMS_OUTPUT.PUT_LINE('Update_OLD_Value-name = ' || OLD_Name);
  DBMS_OUTPUT.PUT_LINE('Update_NEW_Value-name = ' || NEW_Name);
  DBMS_OUTPUT.PUT_LINE('-------------------------------');
  --'Delete'
    delete tbl1 where id=1 returning OLD name into OLD_Name;
  dbms_output.put_line('Before_Delete==> name='||OLD_Name);
    DBMS_OUTPUT.PUT_LINE('-------------------------------');
  --'Insert'  
    insert into tbl1 values(3,'Reza')  RETURNING NEW id, NEW name into New_Val_id, NEW_Name;
       dbms_output.put_line('INSERT_New_Value==> id='|| New_Val_id ||' , name='|| NEW_Name);

END;
/
Update_OLD_Value-name = Usef
Update_NEW_Value-name = ALI
-------------------------------
Before_Delete==> name=Vahid
-------------------------------
INSERT_New_Value==> id=3 , name=Reza

ارائه خدمات مشاوره ، پشتیبانی و نصب و راه اندازی پایگاه داده اوراکل در سراسر کشور...................... تلفن: 09128110897 ایمیل:[email protected]

برچسب: نویسنده: خنجی تاريخ: يکشنبه 12 آذر 1402 ساعت: 6:28

صفحه بندی