PL / SQL: восклицательный знак в ORACLE - PullRequest
0 голосов
/ 20 ноября 2018

Что это за восклицательные знаки (!) В следующем запросе?

l_sql := q'!
              SELECT CASE WHEN FILTER_CNT = 0 THEN NULL ELSE FILTER_LIST END AS FILTER_LIST
              FROM
              (
                  SELECT 'TABLE_NAME NOT LIKE ' || LISTAGG(''''||EXCLUSION_CRITERIA||'''', ' AND TABLE_NAME NOT LIKE ') WITHIN GROUP (ORDER BY ROWNUM) AS FILTER_LIST, COUNT(*) AS FILTER_CNT
                  FROM !'|| p_after_owner ||q'!.UT_TABLE_EXCLUSION
                  WHERE EXCLUSION_TYPE = 'P'
              )
            !';

1 Ответ

0 голосов
/ 20 ноября 2018

Метод q цитирования строк означает, что вам не нужно экранировать одинарные кавычки в строке.

Согласно документации , он работает следующим образом:

q'<single character delimiter><text><single character delimiter>'

Следовательно, ! s в вашей строке образца действует как разделитель кавычек.

Например, если вы хотите использовать строку Don't worry, be happy, в кавычках старого стиля, это станет:

'Don''t worry, be happy'

, но новый механизм цитирования будет:

q'!Don't worry, be happy!'

или

q'{Don't worry, be happy}'

и т. д.

...