sql >> Databáze >  >> RDS >> Oracle

SQL uložená procedura pro kontrolu hodnoty yes/no v tabulce a provedení sql

Neexistuje žádné if (cursor) konstrukce nebo skutečně exists operátor v syntaxi PL/SQL. Budete muset udělat něco takového:

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;

a rownum =1 podmínka je pouze v případě, že existuje velký počet řádků, protože je nepotřebujete k tomu, abyste je všechny spočítali pro test existence. (Výsledek to neovlivní, pokud má počítat milion řádků, je to jen ztráta času, když vás zajímá, jestli existuje jen jeden řádek.) Pro kontrolu existence můžete stejně tak použít něco takového:

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


  1. MySql sečte prvky sloupce

  2. Ignoruje MySQL hodnoty null na jedinečných omezeních?

  3. Plánovač událostí by se měl spouštět každý měsíc

  4. NodeJS Jak zvládnout souběžný požadavek na MySQL