Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

IF Statement and not in select

The Informix it works, how to do like this in Oracle?

IF (uzel NOT IN (SELECT a.uzel FROM user_setup.menu a WHERE a.vetka <> a.uzel
                             AND a.vetka IN (SELECT vetka FROM user_setup.param_menu)))
          THEN
             --;
          END IF;
like image 741
Dmitriy Avatar asked Oct 23 '15 05:10

Dmitriy


2 Answers

Try this:

DECLARE
  temp NUMBER;
  v_uzel user_setup.menu.uzel%TYPE;
BEGIN    
  SELECT COUNT(*) 
  INTO temp
  FROM dual
  WHERE EXISTS (SELECT A.uzel 
                FROM user_setup.menu A 
                WHERE A.vetka <> A.uzel
                AND A.uzel = v_uzel
                AND A.vetka IN (SELECT vetka FROM user_setup.param_menu));


  IF temp < 1 THEN
    -- code here 

  END IF;
END;
like image 143
brenners1302 Avatar answered Sep 28 '22 11:09

brenners1302


In Oracle you need to use a different approach:

DECLARE
   usel1 <specify here the data type for the usel>;
BEGIN

  SELECT a.uzel INTO usel1 
  FROM user_setup.menu a 
  WHERE a.vetka <> a.uzel AND a.usel = uzel
   AND a.vetka IN (SELECT vetka FROM user_setup.param_menu))

   -- this means the record is found.

EXCEPTION
   WHEN NO_DATA_FOUND THEN
     -- do other processing here
END;
like image 42
cha Avatar answered Sep 28 '22 10:09

cha