Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Procedura składowana SQL do sprawdzania wartości tak/nie w tabeli i wykonywania sql

Nie ma if (cursor) konstrukcja lub rzeczywiście każdy exists operator w składni PL/SQL. Musisz zrobić coś takiego:

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;

i rownum =1 warunek jest na wypadek dużej liczby wierszy, ponieważ nie trzeba liczyć ich wszystkich do testu istnienia. (Nie wpłynie to na wynik, jeśli będzie musiał liczyć milion wierszy, to po prostu strata czasu, gdy zależy ci tylko na tym, czy jeden wiersz istnieje.) Możesz również użyć czegoś takiego do sprawdzenia istnienia:

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. 50 odcieni egzaminu certyfikacyjnego Oracle Database

  2. ORACLE Select Distinct zwraca wiele kolumn i gdzie

  3. Jak połączyć grupę rekordów w Oracle?

  4. Jak odjąć 2 daty w Oracle, aby uzyskać wynik w godzinach i minutach?

  5. Przyznaj wybór we wszystkich tabelach należących do określonego użytkownika