00933. 00000 - «Команда SQL не завершена должным образом» ДИНАМИЧНЫЙ SQL - PullRequest
0 голосов
/ 03 октября 2018
DECLARE
   CURSOR c_ddy (p_table_name VARCHAR2, p_table_name_2 VARCHAR2)
   IS
      (SELECT column_name
         FROM (  SELECT column_name
                   FROM user_tab_columns
                  WHERE table_name = p_table_name
               ORDER BY column_name));

   TYPE t_content IS TABLE OF VARCHAR2 (9000)
      INDEX BY BINARY_INTEGER;

   a_content   t_content;
   l_sql       VARCHAR2 (1000);
BEGIN
   FOR r_ddy IN c_ddy ('TABLE_a', 'TABLE_B')
   LOOP
      l_sql :=
            'SELECT  '
         || r_ddy.column_name
         || ' FROM TABLE_A '
         || 'MINUS'
         || 'SELECT  '
         || r_ddy.column_name
         || 'FROM TABLE_B';

      EXECUTE IMMEDIATE l_sql BULK COLLECT INTO a_content;

      DBMS_OUTPUT.put_line (l_sql);
   END LOOP;
END;

Попытка вывести каждый столбец в TABLE_A минус каждый столбец в TABLE_B.

1 Ответ

0 голосов
/ 03 октября 2018

В строке SQL отсутствует пробел.Попробуйте это:

  l_sql :=
        'SELECT '
     || r_ddy.column_name
     || ' FROM TABLE_A '
     || ' MINUS '
     || ' SELECT '
     || r_ddy.column_name
     || ' FROM TABLE_B';

UPD: по какой-то причине пробелы были удалены раньше.Теперь я их снова поставил.

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