Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Вызов стандартной функции вместо пользовательской  [new]
AlexMed
Member

Откуда:
Сообщений: 6
В базе определена пользовательская функция FORMAT.
Поэтому
SELECT FORMAT(GETDATE(), 'yyyy') и SELECT dbo.FORMAT(GETDATE(), 'yyyy')
Дают разные результаты. И это правильно.
Переделать dbo.FORMAT(GETDATE(), 'yyyy') не могу (умею, но нельзя).

При создании/изменении представления Server Management Studio при сохранении сама
подставляет dbo.
Заменяет FORMAT(GETDATE(), 'yyyy') на dbo.FORMAT(GETDATE(), 'yyyy')

Вопрос
Как явно вызывать в представлении стандартный FORMAT
20 окт 17, 13:22    [20885700]     Ответить | Цитировать Сообщить модератору
 Re: Вызов стандартной функции вместо пользовательской  [new]
aleks222
Guest
AlexMed
В базе определена пользовательская функция FORMAT.
Поэтому
SELECT FORMAT(GETDATE(), 'yyyy') и SELECT dbo.FORMAT(GETDATE(), 'yyyy')
Дают разные результаты. И это правильно.
Переделать dbo.FORMAT(GETDATE(), 'yyyy') не могу (умею, но нельзя).

При создании/изменении представления Server Management Studio при сохранении сама
подставляет dbo.
Заменяет FORMAT(GETDATE(), 'yyyy') на dbo.FORMAT(GETDATE(), 'yyyy')

Вопрос
Как явно вызывать в представлении стандартный FORMAT


Внезапно! Не использовать редактор представлений SSMS?
20 окт 17, 13:31    [20885753]     Ответить | Цитировать Сообщить модератору
 Re: Вызов стандартной функции вместо пользовательской  [new]
dies irae
Member

Откуда:
Сообщений: 78
AlexMed
Переделать dbo.FORMAT(GETDATE(), 'yyyy') не могу (умею, но нельзя).

переделать представление ничуть не сложнее, чем переделать функцию:
alter view ....
20 окт 17, 14:11    [20885934]     Ответить | Цитировать Сообщить модератору
 Re: Вызов стандартной функции вместо пользовательской  [new]
AlexMed
Member

Откуда:
Сообщений: 6
dies irae
AlexMed
Переделать dbo.FORMAT(GETDATE(), 'yyyy') не могу (умею, но нельзя).

переделать представление ничуть не сложнее, чем переделать функцию:
alter view ....


Проще всего в окне редактора представлений добавить поле и сохранить.
Но поскольку он автоматом изменяет FORMAT на dbo.FORMAT воспользовался советом aleks222 и делаю через ALTER.

Плохо то что
1. Если зайти в редактор представлений и нажать там сохранить, то все портится. Нужно помнить об этом.
2. Для редактирования приходится выполнять лишние действия закидывать представление в редактор запросов и там править.

Вот если бы в представлении указать волшебное слово типа sys.FORMAT(...) было бы куда лучше.
20 окт 17, 16:43    [20886636]     Ответить | Цитировать Сообщить модератору
 Re: Вызов стандартной функции вместо пользовательской  [new]
dies irae
Member

Откуда:
Сообщений: 78
да забейте на этот редактор
не разу его не использовал.
Script View As -> Alter to ... и меняй что хочешь
20 окт 17, 17:07    [20886723]     Ответить | Цитировать Сообщить модератору
 Re: Вызов стандартной функции вместо пользовательской  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31355
AlexMed
Проще всего в окне редактора представлений добавить поле и сохранить.
Но поскольку он автоматом изменяет FORMAT на dbo.FORMAT
Как же "проще", если он всё портит??? Тем более что количество ваших действий совершенно одинаково.

AlexMed
Если зайти в редактор представлений и нажать там сохранить, то все портится. Нужно помнить об этом.
Просто никогда не запускайте "редактор", и не только представлений.

AlexMed
2. Для редактирования приходится выполнять лишние действия закидывать представление в редактор запросов и там править.
Вместо нажимания "редактировать" нажимайте "создать скрипт alter". Ничего сложного.
20 окт 17, 17:47    [20886864]     Ответить | Цитировать Сообщить модератору
 Re: Вызов стандартной функции вместо пользовательской  [new]
AlexMed
Member

Откуда:
Сообщений: 6
На этом наверное всё.
Всем спасибо.
20 окт 17, 18:32    [20886981]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить