Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Firebird, InterBase Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2 3 4   вперед  Ctrl      все
 Сто тысяч "Почему так реализовано?"  [new]
rdb_dev
Member

Откуда: с болот
Сообщений: 3061
Большая просьба разъяснить с логическим обоснованием - с чем связано отсутствие данной возможности?

Могу задать ограничение CHECK для домена или для таблицы, а также могу использовать домен с ограничением CHECK при объявлении (DECLARE VARIABLE) переменной внутри SP/EB/Fn, но не могу использовать ограничение CHECK в самом объявлении переменной внутри SP/EB/Fn, например:
DECLARE VARIABLE uint8 SMALLINT DEFAULT NULL CHECK(uint8 BETWEEN 0 AND 255);
Ругается на 'CHECK' - token unknown
Почему? Опять стандарт?

З.Ы. Тему так назвал, чтобы для подобных вопросов по сто тысяч раз не создавать. :)
23 сен 19, 14:14    [21976856]     Ответить | Цитировать Сообщить модератору
 Re: Сто тысяч "Почему так реализовано?"  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 30631

а шо там у Оракела?

Posted via ActualForum NNTP Server 1.5

23 сен 19, 14:19    [21976869]     Ответить | Цитировать Сообщить модератору
 Re: Сто тысяч "Почему так реализовано?"  [new]
rdb_dev
Member

Откуда: с болот
Сообщений: 3061
Мимопроходящий, а причём тут Оракел, который сам под себя стандарты лабает, когда у нас Огнептиц? Почему Оракел - законодатель, а не комьюнити?
23 сен 19, 14:22    [21976872]     Ответить | Цитировать Сообщить модератору
 Re: Сто тысяч "Почему так реализовано?"  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 30631

23.09.2019 14:22, rdb_dev пишет:
> Мимопроходящий, а причём тут Оракел, который сам под себя стандарты лабает, когда у нас Огнептиц? Почему Оракел - законодатель, а не комьюнити?

завыл матерно, напился, набил рожу вопрошавшему, долго бился головой об стенку, в общем, ушел от ответа...
(С)

Posted via ActualForum NNTP Server 1.5

23 сен 19, 14:25    [21976876]     Ответить | Цитировать Сообщить модератору
 Re: Сто тысяч "Почему так реализовано?"  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 10142
rdb_dev,

ИХМО,
DECLARE VARIABLE внутри PSQL с ограничениями не имеет смысла. Ты и так там можешь всё проверить с помощью IF и бросить нормальное исключение с понятным текстом, а не непонятное системное.
23 сен 19, 14:25    [21976877]     Ответить | Цитировать Сообщить модератору
 Re: Сто тысяч "Почему так реализовано?"  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 48652

rdb_dev
а причём тут Оракел, который сам под себя стандарты лабает, когда у нас Огнептиц?

Ну ок, а что там у стандарта?

Posted via ActualForum NNTP Server 1.5

23 сен 19, 14:29    [21976884]     Ответить | Цитировать Сообщить модератору
 Re: Сто тысяч "Почему так реализовано?"  [new]
Старый плюшевый мишка
Member

Откуда:
Сообщений: 654
rdb_dev
Большая просьба разъяснить с логическим обоснованием - с чем связано отсутствие данной возможности?

Могу задать ограничение CHECK для домена или для таблицы, а также могу использовать домен с ограничением CHECK при объявлении (DECLARE VARIABLE) переменной внутри SP/EB/Fn, но не могу использовать ограничение CHECK в самом объявлении переменной внутри SP/EB/Fn


Патамушта Check - это триггер. Я так дуиаю (С).
23 сен 19, 14:31    [21976890]     Ответить | Цитировать Сообщить модератору
 Re: Сто тысяч "Почему так реализовано?"  [new]
rdb_dev
Member

Откуда: с болот
Сообщений: 3061
Симонов Денис, конечно могу!
Могу вместо выплёвывания стандартного EXCEPTION на нарушение ограничения CHECK определить свой EXCEPTION, проверить в операторе IF и выплюнуть этот свой EXCEPTION. Или могу создать свой домен с CHECK и использовать его при объявлении переменной внутри SP/EB/Fn. Могу... Но хотелось бы иметь геморрой поменьше.
23 сен 19, 14:34    [21976894]     Ответить | Цитировать Сообщить модератору
 Re: Сто тысяч "Почему так реализовано?"  [new]
rdb_dev
Member

Откуда: с болот
Сообщений: 3061
Dimitry Sibiryakov
Ну ок, а что там у стандарта?
А что у нас, обычно, помещают в стандарт? То, что, в большинстве случаев, уже используется де-факто у "законодателей"?
23 сен 19, 14:36    [21976897]     Ответить | Цитировать Сообщить модератору
 Re: Сто тысяч "Почему так реализовано?"  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 30631

23.09.2019 14:34, rdb_dev пишет:
> хотелось бы иметь геморрой поменьше.

Релиф! (С)

Posted via ActualForum NNTP Server 1.5

23 сен 19, 14:37    [21976900]     Ответить | Цитировать Сообщить модератору
 Re: Сто тысяч "Почему так реализовано?"  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 10142
rdb_dev
Почему Оракел - законодатель, а не комьюнити?


комьюнити эта твоя супер фича на фиг не упёрлась. Иначе бы давно попросили.
И я кстати против такой возможности
23 сен 19, 14:39    [21976907]     Ответить | Цитировать Сообщить модератору
 Re: Сто тысяч "Почему так реализовано?"  [new]
rdb_dev
Member

Откуда: с болот
Сообщений: 3061
Мимопроходящий
Релиф! (С)
Оценил!
23 сен 19, 14:40    [21976908]     Ответить | Цитировать Сообщить модератору
 Re: Сто тысяч "Почему так реализовано?"  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 10142
rdb_dev
Но хотелось бы иметь геморрой поменьше.


такая возможность наоборот повысит вероятность геморроя на ровном месте.
23 сен 19, 14:42    [21976912]     Ответить | Цитировать Сообщить модератору
 Re: Сто тысяч "Почему так реализовано?"  [new]
rdb_dev
Member

Откуда: с болот
Сообщений: 3061
Симонов Денис
комьюнити эта твоя супер фича на фиг не упёрлась. Иначе бы давно попросили.
И я кстати против такой возможности
Ну, какая же это "суперфича"? На таковую не тянет... Почему-то при объявлении таблицы:
CONSTRAINT CHECK("field_name" BETWEEN 0 AND 255)

или при объявлении домена:
CREATE DOMAIN UINT8 AS SMALLINT CHECK(VALUE BETWEEN 0 AND 255);
, так в порядке вещей, а как для DECLARE VARIABLE, так сразу "суперфича"?
23 сен 19, 14:45    [21976920]     Ответить | Цитировать Сообщить модератору
 Re: Сто тысяч "Почему так реализовано?"  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 30631
собственно говоря, пофигу что там с геморроями.
вопрос упирается в то, КТО и за каким *** будет ЭТО реализовывать?

Сообщение было отредактировано: 23 сен 19, 15:26
23 сен 19, 14:46    [21976922]     Ответить | Цитировать Сообщить модератору
 Re: Сто тысяч "Почему так реализовано?"  [new]
rdb_dev
Member

Откуда: с болот
Сообщений: 3061
Мимопроходящий, ответ на вопрос "Кто?" - очевиден, а ответ "за каким...?" я уже дал.
23 сен 19, 14:50    [21976929]     Ответить | Цитировать Сообщить модератору
 Re: Сто тысяч "Почему так реализовано?"  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 30631

23.09.2019 14:50, rdb_dev пишет:
> а ответ "за каким...?" я уже дал.

не-а.
пока прозвучало лишь "ДАЙТЕ!"

Posted via ActualForum NNTP Server 1.5

23 сен 19, 14:52    [21976932]     Ответить | Цитировать Сообщить модератору
 Re: Сто тысяч "Почему так реализовано?"  [new]
rdb_dev
Member

Откуда: с болот
Сообщений: 3061
Мимопроходящий, нет! Пока что прозвучало обоснованное "Почему?"
23 сен 19, 14:53    [21976934]     Ответить | Цитировать Сообщить модератору
 Re: Сто тысяч "Почему так реализовано?"  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 28320
rdb_dev,

возможно, я идиотский ответ дам, но всё же дам:
- столбец таблицы - это не переменная.
- у переменных в компилируемых ЯП нет никаких подобных ограничений.

поэтому check для declare variable выглядит как "зуб в носу" (с).

p.s. нунах...
23 сен 19, 14:55    [21976936]     Ответить | Цитировать Сообщить модератору
 Re: Сто тысяч "Почему так реализовано?"  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 10142
rdb_dev,

ну ладно. Смотри в стандарте для таблиц и доменов ограничение CHECK явно определено ещё в SQL-92. Что касается хранимых процедур, то их вовсе в стандарте не было до SQL-99. В СУБД различных вендоров они появились давно.

Так вот в стандарте нет ничего насчёт DECLARE VARIABLE. Вообще ничего. К слову если бы у нас курсоры были только по стандарту, то ты бы обплевался хранимки писать, ибо FOR SELECT там как раз нету.

Все вендоры делали язык хранимок на своё усмотрение. Позже кое-что в него стали вносить из стандарта, но основа всё равно осталось своя. Так вот, до тебя не было людей которые считали, что CHECK в DECLARE вообще нужно.
23 сен 19, 14:57    [21976947]     Ответить | Цитировать Сообщить модератору
 Re: Сто тысяч "Почему так реализовано?"  [new]
rdb_dev
Member

Откуда: с болот
Сообщений: 3061
kdv, а как CHECK выглядит для домена, который, к примеру, используется только в DECLARE VARIABLE?
23 сен 19, 14:58    [21976950]     Ответить | Цитировать Сообщить модератору
 Re: Сто тысяч "Почему так реализовано?"  [new]
rdb_dev
Member

Откуда: с болот
Сообщений: 3061
Симонов Денис, ведь можете, когда хотите!
23 сен 19, 14:59    [21976953]     Ответить | Цитировать Сообщить модератору
 Re: Сто тысяч "Почему так реализовано?"  [new]
rdb_dev
Member

Откуда: с болот
Сообщений: 3061
Симонов Денис
Все вендоры делали язык хранимок на своё усмотрение. Позже кое-что в него стали вносить из стандарта, но основа всё равно осталось своя. Так вот, до тебя не было людей которые считали, что CHECK в DECLARE вообще нужно.
Обойдусь пока - не горит... Но хотелось бы - для большего единообразия объявлений и удобства.
23 сен 19, 15:02    [21976955]     Ответить | Цитировать Сообщить модератору
 Re: Сто тысяч "Почему так реализовано?"  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 10142
rdb_dev,

и кстати домен это не тип данных!!! Это просто тиражируемое ограничение на столбец, чтобы многократно можно было использовать в нескольких таблицах. По доброте душевной их дали использовать в PSQL, хотя самое правильное делать TYPE OF DOMAIN или TYPE OF COLUMN, а как раз ограничения от доменов в PSQL часто мешают. Особенно какой-нибудь NOT NULL

kdv
p.s. нунах...


+100500
23 сен 19, 15:04    [21976959]     Ответить | Цитировать Сообщить модератору
 Re: Сто тысяч "Почему так реализовано?"  [new]
rdb_dev
Member

Откуда: с болот
Сообщений: 3061
Симонов Денис, вот уж нет!
Исходя из твоего описания TYPE OF и тиражируемости на переменные внутри SP/EB/Fn, это именно тип данных с проверкой ограничения, подобно типам с проверкой в таких RTL, как JVM или .Net
23 сен 19, 15:11    [21976973]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2 3 4   вперед  Ctrl      все
Все форумы / Firebird, InterBase Ответить