Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Проверка типа CHECK  [new]
alex899
Member

Откуда:
Сообщений: 6
Всем добрый вечерок!)))
Сегодня что-то не заладилось с самого утра. Объясняю все по порядку...

есть табличка с именеv 'PE'(к примеру, чтобы было нагляднее)
CREATE TABLE PE (
ID NUMBER(9), NAME VARCHAR2(25) );

если написать вот так
ALTER TABLE PE ADD CONSTRAINT "const_100500" CHECK ( NAME IN ('ВАСЯ', 'КОЛЯ') );
то я создам CONSTR типа чек.
ОКей, но у меня возникает вопрос: я хочу проверить значение, которое я подаю в качестве входного параметра поцедурки, подходит ли оно к столбцу "NAME".(тип данных и размер данных я уже проверил) В случае неудачи, мне выведет 'ой не подошло', в случае если подошло 'окей'
как это сделать, помоги Господа, пожалуйста?!!)))

з.ы. как я понял, нужно брать в результате:
select * from ALL_CONSTRAINTS where TABLE_NAME like 'PE'
поле SEARCH_CONDITION и с ним орудовать - т.к. там прописывается этот параметр
16 окт 11, 19:14    [11448462]     Ответить | Цитировать Сообщить модератору
 Re: Проверка типа CHECK  [new]
Человек и Кошка
Member

Откуда: настоящему индейцу завсегда везде ништяк (с)
Сообщений: 830
alex899,

А к чему этот велосипед? Вставляй запись в таблицу с теми значениями параметров, которые получил и отлавливай исключение.
16 окт 11, 19:36    [11448483]     Ответить | Цитировать Сообщить модератору
 Re: Проверка типа CHECK  [new]
Человек и Кошка
Member

Откуда: настоящему индейцу завсегда везде ништяк (с)
Сообщений: 830
alex899
как это сделать, помоги Господи, пожалуйста?!!

Блин, только сейчас заметил, прошу прощения, что встрял :)
16 окт 11, 19:41    [11448489]     Ответить | Цитировать Сообщить модератору
 Re: Проверка типа CHECK  [new]
alex899
Member

Откуда:
Сообщений: 6
alex899,

Ну да, это хорошее решение, но а если у меня есть параметр входной "имя_таблицы", а insert не будет работать с параметром имени таблицы, ему надо заранее знать, в какую таблицу я посылаю данные...

Без вставки в таблицу есть ли возможность сделать это какой-то проверкой типо if-else ?
16 окт 11, 19:44    [11448496]     Ответить | Цитировать Сообщить модератору
 Re: Проверка типа CHECK  [new]
alex899
Member

Откуда:
Сообщений: 6
автор
как это сделать, помогите Господа, пожалуйста?!!)))
16 окт 11, 19:46    [11448498]     Ответить | Цитировать Сообщить модератору
 Re: Проверка типа CHECK  [new]
Человек и Кошка
Member

Откуда: настоящему индейцу завсегда везде ништяк (с)
Сообщений: 830
alex899
alex899,

Ну да, это хорошее решение, но а если у меня есть параметр входной "имя_таблицы", а insert не будет работать с параметром имени таблицы, ему надо заранее знать, в какую таблицу я посылаю данные...

Без вставки в таблицу есть ли возможность сделать это какой-то проверкой типо if-else ?

Ничего не понятно. FAQ.
16 окт 11, 19:51    [11448501]     Ответить | Цитировать Сообщить модератору
 Re: Проверка типа CHECK  [new]
-2-
Member

Откуда:
Сообщений: 15330
alex899,

тебе сразу сказали, что занимаешься ерундой. сколько ников не регистрируй на sql.ru, с такими подходом только совсем тупой препод оценит твои мытарства.
16 окт 11, 20:34    [11448561]     Ответить | Цитировать Сообщить модератору
 Re: Проверка типа CHECK  [new]
semenar
Member

Откуда: Днепропетровск
Сообщений: 3308
Блог
alex899
alex899,
Ну да, это хорошее решениt.......
insert не будет работать с параметром имени таблицы, ему надо заранее знать, в какую таблицу я посылаю данные...
Без вставки в таблицу есть ли возможность сделать это какой-то проверкой типо if-else ?

Есть-триггер. Там и перечисляй все васей, может рука устанет писать.. А если хочешь по человечески- ты имя констрейнту назначил? Заведи табличку на сервере- имя чека,сообщение об ошибке. И там где обрабатываешь исключение selectи в эту табличку(табличку еще можно держать в локале, обновлять по необходимости).
16 окт 11, 21:28    [11448628]     Ответить | Цитировать Сообщить модератору
 Re: Проверка типа CHECK  [new]
grey_narn
Member

Откуда: Алма-Ата, Казахстан
Сообщений: 178
Рискну все же встрять.

Если так приспичило что-то там проверять перед вставкой в данном сферическом примере, то, IMHO, логичнее завести справочник в отдельной таблице и создать не CHECK, а FOREIGN KEY на нее.

CHECK --- он больше для простейших случаев типа 0, 1 или для гарантии того, что вставленное значение в верхнем регистре находится, например. То есть завтра это уже не (Вася, Коля), а (Вася, Петя, Саша) - и что, будете CHECK пересоздавать?
16 окт 11, 21:35    [11448635]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить