если первый результат запроса равен нулю, переходите ко второму запросу в plsql - PullRequest
2 голосов
/ 15 октября 2019
procedure sistem_kullanici_ara(ptckno in musteri.tck_no%type,
pcursor  in out sys_refcursor)  is   
 begin      
      open pcursor for
        select *
        from sistem_kullanici sk,
             musteri_rol      mr,
             musteri          m,
             calisan          c,
             rol r,
             departman        d,
             bolge            b
       where sk.calisan_id = c.calisan_id
       and mr.musteri_id = m.musteri_id
       and r.rol_id = mr.rol_id
       and r.rol_id = 2001
       and sk.bolge_kod = b.bolge_kod
       and sk.departman_kod=d.departman_kod
       and sk.bitis_tarih is null
         and m.tck_no = 11111
  end;

если этот результат запроса нулевой, переходите ко второму запросу

как:

open pcursor for
        select *
        from musteri  m

       where m.tck_no = 11111
end;

У меня есть два запроса, и если первый результат запроса нулевой, я хочу перейти ко второмуquery.

Как я могу это сделать? UNION у меня не работает, мне нужен другой метод.

Ответы [ 2 ]

1 голос
/ 15 октября 2019

Я думаю, что сначала вы можете посчитать, а затем продолжить с логикой:

procedure sistem_kullanici_ara(ptckno in musteri.tck_no%type,
pcursor  in out sys_refcursor)  is   

lv_count number := 0;

 begin      
     select count(1) into lv_count
        from sistem_kullanici sk,
             musteri_rol      mr,
             musteri          m,
             calisan          c,
             rol r,
             departman        d,
             bolge            b
       where sk.calisan_id = c.calisan_id
       and mr.musteri_id = m.musteri_id
       and r.rol_id = mr.rol_id
       and r.rol_id = 2001
       and sk.bolge_kod = b.bolge_kod
       and sk.departman_kod=d.departman_kod
       and sk.bitis_tarih is null
         and m.tck_no = 11111;


    if lv_count > 0 then
      open pcursor for
        select *
        from sistem_kullanici sk,
             musteri_rol      mr,
             musteri          m,
             calisan          c,
             rol r,
             departman        d,
             bolge            b
       where sk.calisan_id = c.calisan_id
       and mr.musteri_id = m.musteri_id
       and r.rol_id = mr.rol_id
       and r.rol_id = 2001
       and sk.bolge_kod = b.bolge_kod
       and sk.departman_kod=d.departman_kod
       and sk.bitis_tarih is null
         and m.tck_no = 11111;

     else

      open pcursor for
        select *
        from musteri  m

       where m.tck_no = 11111;
    end if;
  end;

Ура !!

0 голосов
/ 15 октября 2019

Сначала создайте представление:

  create view v_sistem_kullanici as 
  select *
    from sistem_kullanici sk
    join musteri_rol      mr on <mr.related_id> = <sk.related_id>
    join musteri          m on mr.musteri_id = m.musteri_id
    join calisan          c on sk.calisan_id = c.calisan_id
    join rol              r on r.rol_id = mr.rol_id
    join departman        d on sk.departman_kod=d.departman_kod
    join bolge            b on sk.bolge_kod = b.bolge_kod
   where sk.bitis_tarih is null
     and r.rol_id = 2001;

, а затем создайте процедуру:

CREATE OR REPLACE PROCEDURE sistem_kullanici_ara(
                                                 ptckno in musteri.tck_no%type,
                                                 pcursor  in out sys_refcursor
                                                ) IS    
  r_sistem_kullanici  v_sistem_kullanici%rowtype;
BEGIN

  OPEN pcursor FOR 
    select *
      from v_sistem_kullanici
     where tck_no = ptckno;

 FETCH pcursor INTO r_sistem_kullanici; 

 IF pcursor%notfound THEN
     OPEN pcursor FOR 
     select *
       from musteri  m
      where m.tck_no = ptckno;
  END IF;

END;

Хитрость заключается в рассмотрении c1%notfound после fetch..into оператора с использованиемлокальная переменная типа строки, сгенерированная этим вновь созданным представлением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...