Запросить ограничение Oracle после значения search_condition - PullRequest
5 голосов
/ 05 октября 2011

Я хочу найти ограничение в Oracle SQL, которое имеет определенное условие поиска. Примерно так:

SELECT constraint_name, constraint_type,search_condition
FROM USER_CONSTRAINTS
WHERE table_name ='MYTABLE' AND search_condition = '"myColumn" IS NOT NULL';

Проблема в том, что я получаю ошибку "Неверное использование типа данных LONG".

Буду признателен за рабочую альтернативу. Спасибо!

Ответы [ 3 ]

1 голос
/ 05 октября 2011

Изменить вторую половину предложения WHERE следующим образом:

SUBSTR(search_condition, 1, 21) = 'whatever you're after'

search_condition - тип данных LONG, и это скорее ограничивает то, что вы можете с ним делать.последний параметр SUBSTR дает длину возвращаемой строки, поэтому при необходимости измените ее.

Исправлено, поскольку я забыл об ограничении предложений WHERE, в основном создайте функцию PL / SQL для выполнения вышеупомянутого и используйтечто в вашем предложении WHERE,

Например,

FUNCTION get_long_16(pFormID NUMBER, pSectionItemID NUMBER, pSequence NUMBER)
  RETURN VARCHAR2
  AS
          l_data LONG;
  BEGIN
      SELECT far.text_answer
        INTO l_data
        FROM form_answers_repeating far
       WHERE far.form_id = pFormID
         AND far.section_item_id = pSectionItemID
         AND far.sequence = pSequence;

      RETURN SUBSTR(l_data, 1, 16);
  END;

Как используется здесь ....

1 голос
/ 12 января 2017

используйте

describe USER_CONSTRAINTS ;

, чтобы увидеть, что search_condition имеет тип LONG.

В Oracle 12: search_condition_vc будет решением.

0 голосов
/ 05 октября 2011

Вы должны использовать PL / SQL, по-видимому.Смотрите здесь для примера:

http://www.orafaq.com/forum/m/110779/43055/?srch=instr+long#msg_110779

По существу вы не можете использовать LONG в предложениях where.

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