проверить нулевые значения для входных параметров с помощью хранимой процедуры oracle - PullRequest
0 голосов
/ 08 июля 2010

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

1 Ответ

3 голосов
/ 08 июля 2010

Вам потребуется использовать динамический SQL для создания соответствующего запроса для таких параметров:

PROCEDURE myproc (p1 VARCHAR2) IS
   l_sql LONG;
   l_cursor SYS_REFCURSOR;
BEGIN
   l_sql := 'SELECT a, b, c FROM table1';
   IF p1 IS NOT NULL THEN
      l_sql := l_sql || ' JOIN table2 ON table2.x = table1.x';
   END IF;
   l_sql := l_sql || ' WHERE table1.y = :bind1';
   OPEN l_cursor FOR l_sql USING 123;
   ...
END;
...