powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Сто тысяч "Почему так реализовано?"
25 сообщений из 81, страница 1 из 4
Сто тысяч "Почему так реализовано?"
    #39865642
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Большая просьба разъяснить с логическим обоснованием - с чем связано отсутствие данной возможности?

Могу задать ограничение CHECK для домена или для таблицы, а также могу использовать домен с ограничением CHECK при объявлении (DECLARE VARIABLE) переменной внутри SP/EB/Fn, но не могу использовать ограничение CHECK в самом объявлении переменной внутри SP/EB/Fn, например:
Код: plsql
1.
DECLARE VARIABLE uint8 SMALLINT DEFAULT NULL CHECK(uint8 BETWEEN 0 AND 255);

Ругается на 'CHECK' - token unknown
Почему? Опять стандарт?

З.Ы. Тему так назвал, чтобы для подобных вопросов по сто тысяч раз не создавать. :)
...
Рейтинг: 0 / 0
Сто тысяч "Почему так реализовано?"
    #39865652
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а шо там у Оракела?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Сто тысяч "Почему так реализовано?"
    #39865655
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий, а причём тут Оракел, который сам под себя стандарты лабает, когда у нас Огнептиц? Почему Оракел - законодатель, а не комьюнити?
...
Рейтинг: 0 / 0
Сто тысяч "Почему так реализовано?"
    #39865658
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
23.09.2019 14:22, rdb_dev пишет:
> Мимопроходящий, а причём тут Оракел, который сам под себя стандарты лабает, когда у нас Огнептиц? Почему Оракел - законодатель, а не комьюнити?

завыл матерно, напился, набил рожу вопрошавшему, долго бился головой об стенку, в общем, ушел от ответа...
(С)
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Сто тысяч "Почему так реализовано?"
    #39865659
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_dev,

ИХМО,
DECLARE VARIABLE внутри PSQL с ограничениями не имеет смысла. Ты и так там можешь всё проверить с помощью IF и бросить нормальное исключение с понятным текстом, а не непонятное системное.
...
Рейтинг: 0 / 0
Сто тысяч "Почему так реализовано?"
    #39865662
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_devа причём тут Оракел, который сам под себя стандарты лабает, когда у нас Огнептиц?

Ну ок, а что там у стандарта?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Сто тысяч "Почему так реализовано?"
    #39865667
Фотография Старый плюшевый мишка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_devБольшая просьба разъяснить с логическим обоснованием - с чем связано отсутствие данной возможности?

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

Патамушта Check - это триггер. Я так дуиаю (С).
...
Рейтинг: 0 / 0
Сто тысяч "Почему так реализовано?"
    #39865670
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис, конечно могу!
Могу вместо выплёвывания стандартного EXCEPTION на нарушение ограничения CHECK определить свой EXCEPTION, проверить в операторе IF и выплюнуть этот свой EXCEPTION. Или могу создать свой домен с CHECK и использовать его при объявлении переменной внутри SP/EB/Fn. Могу... Но хотелось бы иметь геморрой поменьше.
...
Рейтинг: 0 / 0
Сто тысяч "Почему так реализовано?"
    #39865672
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovНу ок, а что там у стандарта?А что у нас, обычно, помещают в стандарт? То, что, в большинстве случаев, уже используется де-факто у "законодателей"?
...
Рейтинг: 0 / 0
Сто тысяч "Почему так реализовано?"
    #39865674
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
23.09.2019 14:34, rdb_dev пишет:
> хотелось бы иметь геморрой поменьше.

Релиф! (С)
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Сто тысяч "Почему так реализовано?"
    #39865680
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_devПочему Оракел - законодатель, а не комьюнити?

комьюнити эта твоя супер фича на фиг не упёрлась. Иначе бы давно попросили.
И я кстати против такой возможности
...
Рейтинг: 0 / 0
Сто тысяч "Почему так реализовано?"
    #39865681
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МимопроходящийРелиф! (С)Оценил!
...
Рейтинг: 0 / 0
Сто тысяч "Почему так реализовано?"
    #39865683
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_devНо хотелось бы иметь геморрой поменьше.

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


или при объявлении домена:
Код: plsql
1.
CREATE DOMAIN UINT8 AS SMALLINT CHECK(VALUE BETWEEN 0 AND 255);

, так в порядке вещей, а как для DECLARE VARIABLE, так сразу "суперфича"?
...
Рейтинг: 0 / 0
Сто тысяч "Почему так реализовано?"
    #39865687
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
собственно говоря, пофигу что там с геморроями.
вопрос упирается в то, КТО и за каким *** будет ЭТО реализовывать?
...
Рейтинг: 0 / 0
Сто тысяч "Почему так реализовано?"
    #39865689
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий, ответ на вопрос "Кто?" - очевиден, а ответ "за каким...?" я уже дал.
...
Рейтинг: 0 / 0
Сто тысяч "Почему так реализовано?"
    #39865692
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
23.09.2019 14:50, rdb_dev пишет:
> а ответ "за каким...?" я уже дал.

не-а.
пока прозвучало лишь "ДАЙТЕ!"
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Сто тысяч "Почему так реализовано?"
    #39865694
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий, нет! Пока что прозвучало обоснованное "Почему?"
...
Рейтинг: 0 / 0
Сто тысяч "Почему так реализовано?"
    #39865696
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_dev,

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

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

p.s. нунах...
...
Рейтинг: 0 / 0
Сто тысяч "Почему так реализовано?"
    #39865700
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_dev,

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

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

Все вендоры делали язык хранимок на своё усмотрение. Позже кое-что в него стали вносить из стандарта, но основа всё равно осталось своя. Так вот, до тебя не было людей которые считали, что CHECK в DECLARE вообще нужно.
...
Рейтинг: 0 / 0
Сто тысяч "Почему так реализовано?"
    #39865703
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv, а как CHECK выглядит для домена, который, к примеру, используется только в DECLARE VARIABLE?
...
Рейтинг: 0 / 0
Сто тысяч "Почему так реализовано?"
    #39865705
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис, ведь можете, когда хотите!
...
Рейтинг: 0 / 0
Сто тысяч "Почему так реализовано?"
    #39865706
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисВсе вендоры делали язык хранимок на своё усмотрение. Позже кое-что в него стали вносить из стандарта, но основа всё равно осталось своя. Так вот, до тебя не было людей которые считали, что CHECK в DECLARE вообще нужно.Обойдусь пока - не горит... Но хотелось бы - для большего единообразия объявлений и удобства.
...
Рейтинг: 0 / 0
Сто тысяч "Почему так реализовано?"
    #39865707
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_dev,

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

kdvp.s. нунах...

+100500
...
Рейтинг: 0 / 0
Сто тысяч "Почему так реализовано?"
    #39865716
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис, вот уж нет!
Исходя из твоего описания TYPE OF и тиражируемости на переменные внутри SP/EB/Fn, это именно тип данных с проверкой ограничения, подобно типам с проверкой в таких RTL, как JVM или .Net
...
Рейтинг: 0 / 0
25 сообщений из 81, страница 1 из 4
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Сто тысяч "Почему так реализовано?"
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]