Удовлетворить сложное состояние, то что-то делать - PullRequest
0 голосов
/ 08 декабря 2018

У меня есть три сценария, если все удовлетворены, тогда что-то делают.

  1. select count(*) from schema.member where condition1 - это 0
  2. select id from schema.ta a, schema.b where a.id=b.id and a.id !='input_id' and a.id in ('M','N');, оно должно быть нулевым или не существующим.
  3. select member from schema.tc, x schema.tb where condition3;он также должен быть нулевым или не существующим.

Таким образом, в основном, если все 3 сценария выполнены, я что-то сделаю.

Я хочу использовать хранимую процедуру, чтобы сделать это,Моя идея - получить целое число от суммы счета каждого сценария;если это 0, то все удовлетворены.

Как и select count(id) from schema.member where condition1 + select count(id) from ... where condition2 + select count(member) from ... where condition3 = 0

Не уверен, что это лучший способ, и помощь сценария приветствуется.

1 Ответ

0 голосов
/ 08 декабря 2018

Вы можете поместить их все в NOT EXISTS проверки

DECLARE
     l_flag   INTEGER;
BEGIN
     SELECT
          CASE
               WHEN NOT EXISTS (
                    SELECT 1
                    FROM schema.member
                    WHERE condition1 = 'somecondition'
               ) AND NOT EXISTS (
                    SELECT 1
                    FROM schema.ta a
                    JOIN schema.b ON a.id = b.id --use proper join syntax
                             WHERE a.id != 'input_id' AND a.id IN ('M','N') 
                             AND a.id IS NOT NULL -- no nulls as you said.
               ) AND NOT EXISTS (
                    SELECT 1
                    FROM schema.tc
                    JOIN schema.tb ON condition3 = '<somecondition>'
                    WHERE member IS NOT NULL -- no nulls as you said.
               ) THEN 1
               ELSE 0
          END
     INTO l_flag
     FROM dual;

     IF
          l_flag = 1
     THEN
          do_something;
     END IF;
END;
/

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

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