Oracle
 sql >> база данни >  >> RDS >> Oracle

SQL съхранена процедура за проверка на стойност да/не в таблица и изпълнение на sql

Няма if (cursor) конструкция или изобщо exists оператор в PL/SQL синтаксис. Ще трябва да направите нещо подобно:

declare
    somevar number;
begin
    select count(*) into somevar
    from   table1
    where  value_desc = 'Indicator'
    and    value1 = 'Y'
    and    rownum = 1;

    if somevar > 0 then
        execute immediate sql_select_yes
    else 
        execute immediate sql_select_no
    end;
end;

и rownum =1 условието е само в случай, че има голям брой редове, тъй като не ви е необходимо да преброите всички за тест за съществуване. (Няма да повлияе на резултата, ако трябва да преброи милион реда, просто е загуба на време, когато ви интересува само дали съществува един ред.) Можете също така да използвате нещо подобно за проверка на съществуването:

select count(*) into somevar from dual
where  exists
       ( select 1
         from   table1
         where  value_desc = 'Indicator'
         and    value1 = 'Y'
         and    rownum = 1 );


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Създайте таблица в процедурата

  2. Разделете низа на токени в pl sql

  3. sun.security.validator.ValidatorException:Неуспешно изграждане на PKIX път, с java>1.6

  4. Къде се съхраняват Java класове в Oracle?

  5. Обединяване на данни от 5 таблици без дублиращи се стойности и получаване на резултат с персонализиран статус в Oracle 10g