Artarad_oracle

قابلیت جدید 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

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

0 پاسخ

دیدگاه خود را ثبت کنید

تمایل دارید در گفتگوها شرکت کنید؟
در گفتگو ها شرکت کنید.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *