![]() |
Модераторы: Akina |
![]() ![]() ![]() |
|
kurajamba |
|
||||
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 30.8.2012 Репутация: нет Всего: нет |
Привет всем!
Не пойму почему не работает мой запрос?
Функция объявлена как:
При запуске выдает ошибку: Ошибка преобразования даты или времени из символьной строки. Что не так? |
||||
|
|||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20580 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 25 Всего: 454 |
А где написано, что имя ТАБЛИЦЫ в запросе может браться из значения функции?
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
kurajamba |
|
|||
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 30.8.2012 Репутация: нет Всего: нет |
Прошу прощения, думал будет понятно, что функция - это многооператорная процедура, возвращающая табличное значение.
Привожу полное объявление.
|
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20580 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 25 Всего: 454 |
Тем более - как в качестве имени таблицы (не таблицы!!! а именно её имени) может использоваться набор записей...
Сделай select into into из функции во временную таблицу, а потом уже обрабатывай полученный набор записей. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
kurajamba |
|
|||
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 30.8.2012 Репутация: нет Всего: нет |
Слушай, у меня есть точно такая же функция только не принимающая в себя никаких аргументов и она отрабатывает нормально.
Например,
Проблема возникает когда я передаю параметр в функцию которую в самую первую запостил. Не пойму почему. Какая-то ошибка преобразования... Хотя типы вроде бы как совпадают. Или я не понимаю о чем ты говоришь? Это сообщение отредактировал(а) kurajamba - 30.8.2012, 17:06 |
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20580 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 25 Всего: 454 |
Стоп! это я туплю... половину от MS SQL говорю, половину от MySQL...
Так что сперва получи GETDATE() в локальную переменную, а потом вызывай функцию. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
kurajamba |
|
|||
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 30.8.2012 Репутация: нет Всего: нет |
И все равно ошибка: Сообщение 241, уровень 16, состояние 1, строка 5 Ошибка преобразования даты или времени из символьной строки. |
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20580 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 25 Всего: 454 |
Наконец-то! Эта проблема возникает, если локаль сеанса отличается от локали сервера. Сделай при присовении в переменную CAST даты в соотв. локаль. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
kurajamba |
|
|||
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 30.8.2012 Репутация: нет Всего: нет |
Не сообразил. Что нужно сделать?
Я уже полный путь прописал к функции. database.dbo.GetMyInfo(@MyDate), но все равно ошибка... :( |
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20580 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 25 Всего: 454 |
GetDate(), если верить докам, возвращает datetime2(7).
Для начала попробуй лобовое
Не получится - попробуй CONVERT со Style=100 или 109 ... или 120/121... -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
kurajamba |
|
|||
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 30.8.2012 Репутация: нет Всего: нет |
Не хочет :(
|
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20580 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 25 Всего: 454 |
Ну тогда совсем последний финт - переменная типа варчар, и каст в него снаружи и из него в датетайм внутри... заработает?
Добавлено через 1 минуту и 11 секунд И ещё - если убрать параметр и вызывать getdate в начале функции - функция работает нормально? -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
Zloxa |
|
|||
![]() Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 10 Всего: 161 |
Я так полагаю в приведенном скрипте серверная(не сеансовая) переменная принимает серверное значение, сеансовая локль вроде никак и не задействована вовсе. Предполагаю что ошибка поднимается внутри функции. Наверное в пятой строке (в приведенном листинге строк - четыре ![]() -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка ![]() |
|||
|
||||
kurajamba |
|
|||
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 30.8.2012 Репутация: нет Всего: нет |
Вы оказались правы! Ошибка внутри функции!
Management Studio успешно создал функцию, ошибку не выдал. Что и дало мне основания полагать что внутри функции все чисто. Спасибо! |
|||
|
||||
![]() ![]() ![]() |
Правила форума "MS SQL" | |
|
Запрещается! Публиковать ссылки и обсуждать взлом чего бы то ни было.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, Akina. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | MS SQL Server | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |