Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Чем чревата передача в хранимую процедуру даты как varchar параметр? / 20 сообщений из 20, страница 1 из 1
21.05.2019, 11:14
    #39815692
кладовщик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чем чревата передача в хранимую процедуру даты как varchar параметр?
Есть процедура с параметрами типа varchar (10), с клиента получает такой параметр и в коде его преобразует в переменную типа datetime и потом все дела делает уже с этой переменной

Код: sql
1.
2.
3.
4.
5.
ALTER PROCEDURE my_proc (@D1 varchar(10))
as begin
DECLARE @Date1 datetime;
SET @Date1 = CONVERT(datetime, @D1, 104);
--всякий код с переменной @Date1 ...



Или это ок?
-----
Не люблю Progress OpenEdge.
...
Рейтинг: 0 / 0
21.05.2019, 12:12
    #39815735
felix_ff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чем чревата передача в хранимую процедуру даты как varchar параметр?
кладовщик,

Ну как минимум убиваете прослушивание параметров. Плохо ли это или хорошо зависит от запросов которые будут эту вашу переменную использовать
...
Рейтинг: 0 / 0
21.05.2019, 13:32
    #39815782
Гавриленко Сергей Алексеевич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чем чревата передача в хранимую процедуру даты как varchar параметр?
Грабельки раскладываете. Не то, чтобы они прям критичные, но требуют от клиентов, чтобы они всегда склеивали дату в 104 формате. Ну и 4 байта на date меньше десяти на varchar.
...
Рейтинг: 0 / 0
21.05.2019, 14:23
    #39815825
iap
iap
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чем чревата передача в хранимую процедуру даты как varchar параметр?
Гавриленко Сергей АлексеевичГрабельки раскладываете. Не то, чтобы они прям критичные, но требуют от клиентов, чтобы они всегда склеивали дату в 104 формате. Ну и 4 байта на date меньше десяти на varchar.Тип DATE занимает 3 байта, а не 4.
...
Рейтинг: 0 / 0
21.05.2019, 14:56
    #39815848
Посетитель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чем чревата передача в хранимую процедуру даты как varchar параметр?
iapГавриленко Сергей АлексеевичГрабельки раскладываете. Не то, чтобы они прям критичные, но требуют от клиентов, чтобы они всегда склеивали дату в 104 формате. Ну и 4 байта на date меньше десяти на varchar.Тип DATE занимает 3 байта, а не 4.

а есть ли трехбайтные регистры?
...
Рейтинг: 0 / 0
21.05.2019, 16:18
    #39815897
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чем чревата передача в хранимую процедуру даты как varchar параметр?
Посетитель,

БД вообще без разницы - какие у кого регистры. А вот место для хранения - существенно.
...
Рейтинг: 0 / 0
21.05.2019, 16:20
    #39815900
Посетитель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чем чревата передача в хранимую процедуру даты как varchar параметр?
Владислав КолосовПосетитель,

БД вообще без разницы - какие у кого регистры. А вот место для хранения - существенно.
Всё так. но какое отношение имеет размер параметра к месту для хранения?
...
Рейтинг: 0 / 0
21.05.2019, 16:35
    #39815913
iap
iap
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чем чревата передача в хранимую процедуру даты как varchar параметр?
Посетительiapпропущено...
Тип DATE занимает 3 байта, а не 4.

а есть ли трехбайтные регистры?А это важно? Если речь идёт о регистрах, то упоминать о размере даты вообще бессмысленно.
Потому что нам разве не всё равно?
...
Рейтинг: 0 / 0
21.05.2019, 16:42
    #39815916
Посетитель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чем чревата передача в хранимую процедуру даты как varchar параметр?
iapПосетительпропущено...


а есть ли трехбайтные регистры?А это важно? Если речь идёт о регистрах, то упоминать о размере даты вообще бессмысленно.
Потому что нам разве не всё равно?

это было не опровержение вашей поправки, я абсолютно согласен с тем, что тип date занимает 3 байта.
но если мы говорим про данную конкретную ситуацию, то параметр физически передается через стек.
и три байта, или четыре туда засунуть - без разницы.

правда, в случае со строкой туда тоже, вероятно, пойдет адрес, а не все 10 байт.
...
Рейтинг: 0 / 0
21.05.2019, 17:51
    #39815963
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чем чревата передача в хранимую процедуру даты как varchar параметр?
Для регистра на имеет значения, но 3 не требуют явного преобразования. В контексте вопроса - нет, не ОК, т.к. полученный результат будет зависеть от языка подключения. Могут поменяться местами день и месяц, если дату не передавать в ANSI текстовом формате.
...
Рейтинг: 0 / 0
21.05.2019, 17:55
    #39815968
Гавриленко Сергей Алексеевич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чем чревата передача в хранимую процедуру даты как varchar параметр?
Владислав КолосовДля регистра на имеет значения, но 3 не требуют явного преобразования. В контексте вопроса - нет, не ОК, т.к. полученный результат будет зависеть от языка подключения. Могут поменяться местами день и месяц, если дату не передавать в ANSI текстовом формате.Там далее конверт с указанием явного стиля.
...
Рейтинг: 0 / 0
22.05.2019, 12:37
    #39816354
uaggster
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чем чревата передача в хранимую процедуру даты как varchar параметр?
Гавриленко Сергей АлексеевичВладислав КолосовДля регистра на имеет значения, но 3 не требуют явного преобразования. В контексте вопроса - нет, не ОК, т.к. полученный результат будет зависеть от языка подключения. Могут поменяться местами день и месяц, если дату не передавать в ANSI текстовом формате.Там далее конверт с указанием явного стиля.
Ну, значит будет падать при передаче в хранимку любой кривой даты.
Try_Convert бы хоть использовали.

кладовщик , если не секрет - зачем это?
В чем сакральный смысл?
Интересно. :-)
...
Рейтинг: 0 / 0
22.05.2019, 13:35
    #39816446
кладовщик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чем чревата передача в хранимую процедуру даты как varchar параметр?
uaggsterНу, значит будет падать при передаче в хранимку любой кривой даты.
Try_Convert бы хоть использовали.

Дата не вручную вводится, а с контрола, т.е. '01.15.2019' ты не введешь, как я понимаю.
uaggster кладовщик , если не секрет - зачем это?
В чем сакральный смысл?
Интересно. :-)
Для меня это тоже секрет. Не думаю, что дело в сниффинге параметров.
Собственно, для того и тему создал.
Быстрым гуглением не нашёл такого - чтобы дата передавалась в процедуру как текст.
Думал, у кого-то с форума встречался такой кейс.
...
Рейтинг: 0 / 0
23.05.2019, 01:04
    #39816844
Диам
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чем чревата передача в хранимую процедуру даты как varchar параметр?
кладовщик,

если не использовать convert, то можно в начале процедуры задавать SET Dateformat DMY
Иначе, при вызове процедуры, например, с линуксового сайта, где система использует английские параметры окружения, ваша хранимка также будет настроена на использование английских установок, т.е. дата из текста будет браться как MDY или YMD
...
Рейтинг: 0 / 0
23.05.2019, 12:30
    #39817012
Кесарь
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чем чревата передача в хранимую процедуру даты как varchar параметр?
Лет десять работал на системе, в которой ВСЕ параметры в принципе передавались как текст.

Никаких особых проблем не было с этим.
...
Рейтинг: 0 / 0
23.05.2019, 12:47
    #39817030
iap
iap
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чем чревата передача в хранимую процедуру даты как varchar параметр?
КесарьЛет десять работал на системе, в которой ВСЕ параметры в принципе передавались как текст.

Никаких особых проблем не было с этим.Если клиент один и написан вами...
А если их сотни и пишутся в разных местах по всему Земному шару (или индусами на аутсорсинге!)?
Все ли будут чётко придерживаться общих правил?
...
Рейтинг: 0 / 0
23.05.2019, 12:56
    #39817037
Кесарь
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чем чревата передача в хранимую процедуру даты как varchar параметр?
Ну это само собой. Клиент один был, конечно.

Но если система открытая, то тут нет никакого технического решения в принципе. Только организационные. Потому что, как показывает практика, косячить люди умеют и при использовании xml и json и вообще при любом способе передачи параметров.


* xml и json имеется в виду использование этих форматов для упаковки параметров в один блок.
...
Рейтинг: 0 / 0
23.05.2019, 14:19
    #39817128
iap
iap
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чем чревата передача в хранимую процедуру даты как varchar параметр?
КесарьНу это само собой. Клиент один был, конечно.

Но если система открытая, то тут нет никакого технического решения в принципе. Только организационные. Потому что, как показывает практика, косячить люди умеют и при использовании xml и json и вообще при любом способе передачи параметров.


* xml и json имеется в виду использование этих форматов для упаковки параметров в один блок.В данном случае достаточно передавать дату как параметр типа DATE, а не как строку. И всё!
...
Рейтинг: 0 / 0
23.05.2019, 14:22
    #39817132
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чем чревата передача в хранимую процедуру даты как varchar параметр?
КесарьЛет десять работал на системе, в которой ВСЕ параметры в принципе передавались как текст.

Никаких особых проблем не было с этим.

а как все дружно договариваются не целые числа передавть?
...
Рейтинг: 0 / 0
23.05.2019, 15:08
    #39817178
Кесарь
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чем чревата передача в хранимую процедуру даты как varchar параметр?
TaPaKа как все дружно договариваются не целые числа передавть?

Клиент один, проблем нет.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Чем чревата передача в хранимую процедуру даты как varchar параметр? / 20 сообщений из 20, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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