|
raise
|
|||
---|---|---|---|
#18+
Подскажите как написать raise если на вход функции пришел date не в формате DD.MM.YYYY ... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2020, 10:05 |
|
raise
|
|||
---|---|---|---|
#18+
x17.mstu, Код: plsql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2020, 10:35 |
|
raise
|
|||
---|---|---|---|
#18+
env, это понятно что raise как мне условие на параметр написать в разделе begin если он пришел не в верном формате? например если p_calc_date is null то я пишу if p_calc_date is null then raise_application_error(-20100, 'Не задан обязательный параметр') end; а как мне написать что p_calc_date не пришел в формате to_date(p_calc_date, 'dd.mm.yyyy) ? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2020, 13:30 |
|
raise
|
|||
---|---|---|---|
#18+
Входной параметр p_calc_date какой тип имеет? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2020, 13:33 |
|
raise
|
|||
---|---|---|---|
#18+
Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2020, 13:36 |
|
raise
|
|||
---|---|---|---|
#18+
x17.mstu, Сделать входной параметр типом date. И всё равно, при передаче даты строкой, это не спасёт от NLS-зависимых значений. Например, строка '03.08.2020' - это третье августа или всё же восьмое марта? По маске пройдёт. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2020, 14:10 |
|
raise
|
|||
---|---|---|---|
#18+
env x17.mstu, Сделать входной параметр типом date. И всё равно, при передаче даты строкой, это не спасёт от NLS-зависимых значений. Например, строка '03.08.2020' - это третье августа или всё же восьмое марта? По маске пройдёт. Исходя из "Подскажите как написать raise если на вход функции пришел date не в формате DD.MM.YYYY" TC не понимает что actual параметр в в ф-цию всегда приходит в типе formal параметра и такой raise есть полный бред. TC: '03.08.2020' будет неявно преобразовано клиентом вызывающим ф-цию исходя из NLS_DATE_FORMAT клиента а ф-ция уже получит DATE. Так что будет эта DATE третье августа или восьмое марта от ф-ции абсолютно не зависит. SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2020, 15:25 |
|
raise
|
|||
---|---|---|---|
#18+
А, дошло. У TC тип параметра строка а по логике это дата. SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2020, 15:28 |
|
raise
|
|||
---|---|---|---|
#18+
SY А, дошло. У TC тип параметра строка а по логике это дата. Однако в его соседнем топике "Как вызвать функцию, если один из параметров date" что меня и смутило. ТС должен прояснить тип formal параметра. SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2020, 15:32 |
|
raise
|
|||
---|---|---|---|
#18+
Pastic, раньше был date, сейчас in varchar2 default null ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2020, 16:39 |
|
raise
|
|||
---|---|---|---|
#18+
x17.mstu, НО далее в блоке после IS я обьявляю l_calc_date date; в блоке begin end l_calc_date:= case when p_calc_date is not null then to_date(p_calc_date, 'dd.mm.yyyy') else trunc(sysdate, 'mm') end; вот ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2020, 16:42 |
|
raise
|
|||
---|---|---|---|
#18+
Alexander Anokhin Ну и что это даст в случае '03.08.2020'? Я бы (USA) так передал восьмое марта и получил бы неправильный результат. Уже N раз объясняли TC - нельзя даты передавать строками, разве-что вкупе с строкой формата. SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2020, 19:29 |
|
raise
|
|||
---|---|---|---|
#18+
SY Уже N раз объясняли TC - нельзя даты передавать строками, разве-что вкупе с строкой формата. Если нельзя, но очень хочется, то можно. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2020, 20:46 |
|
raise
|
|||
---|---|---|---|
#18+
Pastic SY Уже N раз объясняли TC - нельзя даты передавать строками, разве-что вкупе с строкой формата. Если нельзя, но очень хочется, то можно. Нельзя протокол нарушать. А даты можно повсякому передавать, но согласно протоколу. Тип Date допускает несуществующие даты. Проверкой валидности даты занимается функция to_date. В целом она надёжнее, чем собирать бинарный формат DATE иными средствами. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2020, 02:08 |
|
raise
|
|||
---|---|---|---|
#18+
mcureenab Тип Date допускает несуществующие даты. Можно по-подробнее? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2020, 08:51 |
|
raise
|
|||
---|---|---|---|
#18+
Pastic mcureenab Тип Date допускает несуществующие даты. Можно по-подробнее? date, это 7 байт. 2 байта - год с эпохой, 5 байтов (по одному) под месяц, день, час, минуту и сек. в них можно записать 256 месяцев, 256 дней месяца, 256 часов и т.д. В PL/SQL кроме как через to_date даты не получаются. И to_date проверит дату по календарю. А на языках типа C, вполне возможно сконструировать 2020/12/32 00:15:60. Формат NUMBER тоже допускает несуществующие числа. Один разряд NUMBER это цифра от 00 до 99, а памяти под неё байт, который допускает 0-255. Число "сто двести пятьдесят" не такое уж бредовое оказывается. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2020, 09:46 |
|
raise
|
|||
---|---|---|---|
#18+
Pastic mcureenab Тип Date допускает несуществующие даты. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2020, 10:36 |
|
raise
|
|||
---|---|---|---|
#18+
Вчера как раз прислали очередной одноразовый (проверка новой задачи) эксель из SAPа для загрузки в мсскл, на 270 тыс строк В одной колонке даты оказались самого любого формата, включая 17 авг и 00.00.0000 Поругались и договорились, что эту колонку загружать не имеет смысла ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2020, 10:49 |
|
|
start [/forum/topic.php?fid=52&fpage=28&tid=1880559]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
41ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
51ms |
get tp. blocked users: |
2ms |
others: | 10ms |
total: | 145ms |
0 / 0 |