مسعود سلطانی راد
مسعود سلطانی راد
خواندن ۳ دقیقه·۱ سال پیش

قابلیت جدید simple case در پایگاه داده اوراکل ۲۳c

مقدمه :

در پایگاه داده اوراکل نگارش ۲۳c امکان جدیدی در خصوص استفاده دستور Simple Case معرفی شده که در این مستند آن را مورد بررسی قرار می دهیم.

برای نصب پایگاه داده اوراکل ۲۳c به این مقاله مراجعه کنید.

ایجاد محیط تست :

create table test (

id number,

salary number

);

insert into test (id, salary)

values (1,2000), (2,1500), (3,1400), (4,4000), (5,3000), (6,2800), (7,1190), (8,4300), (9,2300);

commit;

در نگارش های گذشته در زمان استفاده از Simple Case حتما باید از شرط مساوی استفاده می کردیم در صورتی که از شرط های نا مساوی بخواهیم استفاده کنیم باید از Searched Case استفاده کنیم.

set serveroutput on

declare

salary_class varchar2(20);

begin

for c_v in (select salary from test) loop

case

when c_v.salary  >= 4000 then salary_class := ‘hi’;

when c_v.salary >= 2000 then salary_class := ‘mid’;

when c_v.salary >= 1000 then salary_class := ‘low’;

when c_v.salary < 1000 then salary_class := ‘bad salary’;

end case;

dbms_output.put_line(c_v.salary|| ‘ : ‘ || l_salary_class);

end loop;

end;

/

۲۰۰۰: mid

۱۵۰۰: low

۱۴۰۰: low

۴۰۰۰: hi

۳۰۰۰: mid

۲۸۰۰: mid

۱۱۹۰: low

۴۳۰۰: hi

۲۳۰۰: mid

PL/SQL procedure successfully completed.

SQL>

با قابلیت جدید معرفی شده، دستور فوق را می توان به این حالت با استفاده از simple case نوشت.

set serveroutput on

declare

salary_class varchar2(20);

begin

for c_v in (select salary from test) loop

case

c_v.salary

when >= 4000  then salary_class := ‘hi’;

when >= 2000 then salary_class := ‘mid’;

when >= 1000 then salary_class := ‘low’;

when > 1000 90 then salary_class := ‘ bad salary’;

end case;

dbms_output.put_line(c_v.salary|| ‘ : ‘ || l_salary_class);

end loop;

end;

/

۲۰۰۰: mid

۱۵۰۰: low

۱۴۰۰: low

۴۰۰۰: hi

۳۰۰۰: mid

۲۸۰۰: mid

۱۱۹۰: low

۴۳۰۰: hi

۲۳۰۰: mid

PL/SQL procedure successfully completed.

SQL>

اگر برای هربررسی چند شرط داشته باشیم، می توان به صورت زیر آن را پیاده سازی کرد.

set serveroutput on

declare

salary_class varchar2(20);

begin

for c_v in (select salary from test) loop

case

c_v.salary

when > 10000, <= 200000  then salary_class := ‘WOW!!’;

when >= 4000, <= 10000  then salary_class := ‘very hi’;

when >= 4000  then salary_class := ‘hi’;

when >= 2000 then salary_class := ‘mid’;

when >= 1000 then salary_class := ‘low’;

when > 1000 90 then salary_class := ‘ bad salary’;

end case;

dbms_output.put_line(c_v.salary|| ‘ : ‘ || l_salary_class);

end loop;

end;

/

برای از ساختار چند شرط در دستورات sql به طور مستقیم، با خطا مواجه خواهیم شد که راهکار آن استفاده function به صورت inline در ساختار with clause می باشد. در ادامه به نمونه کد توجه نمایید.

with

function get_class(salary in number) return varchar2 is

begin

return case salary

when > 10000, <= 200000  then salary_class := ‘WOW!!’;

when >= 4000, <= 10000  then salary_class := ‘very hi’;

when >= 4000  then salary_class := ‘hi’;

when >= 2000 then salary_class := ‘mid’;

when >= 1000 then salary_class := ‘low’;

when > 1000 90 then salary_class := ‘ bad salary’;

end;

end;

select salary, get_class(salary) as salary_class

from   test

/

salary salary_class

———- —————————————-

۲۰۰۰  mid

۱۵۰۰  low

۱۴۰۰  low

۴۰۰۰  hi

۳۰۰۰  mid

۲۸۰۰  mid

۱۱۹۰  low

۴۳۰۰  hi

۲۳۰۰  mid

  یرای خدمات آموزش، مشاوره و نگهداری راه کارهای پایگاه داده اوراکل با ما درارتباط باشید. 

پایگاه داده اوراکل 23cنصب پایگاه داده اوراکل 23cآموزش پایگاه داده اوراکلمسعود سلطانی رادمشاوره پایگاه داده اوراکل
چند سالی هست در حوزه داده ها ( نگهداری و تحلیل آنها) فعالیت دارم و همیشه سعی کردم آموخته هایم رو به اشتراک بگذارم soltanirad@artarad.ir www.artarad.ir
شاید از این پست‌ها خوشتان بیاید