powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Alter function
19 сообщений из 19, страница 1 из 1
Alter function
    #39855672
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пересоздавал объекты скриптом вот так:
Код: sql
1.
2.
3.
4.
5.
6.
if object_id('xxxxx') is null
exec('create function xxxx returns integer as begin return 0 end')
GO

ALTER FUNCTION [dbo].[xxxxx]
.....

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

create function ххххх returns table as return(select id=0)

Мож кому пригодится.

Почему именно такой способ создания/обновления объектов ?
Он самый оптимальный, ИМХО. Лучше, чем Дроп + криейт.

зы: мсскл2008.
...
Рейтинг: 0 / 0
Alter function
    #39855694
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторПочему именно такой способ создания/обновления объектов ?
Он самый оптимальный, ИМХО. Лучше, чем Дроп + криейт.


и почему так имхуется?
Иногда дроп+креате лучше.
...
Рейтинг: 0 / 0
Alter function
    #39855699
Фотография Shakill
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
L_argoНо обнаружил, что для табличных ф-ций альтер фейлится, т.е. нельзя альтером поменять тип ф-ции со скалярного в табличный.
а почему вам надо менять тип функции со скалярного в табличный при помощи alter?
они хоть и называются все "функции", но это три отдельных типа объектов: скалярные, табличные инлайн, табличные многострочные
...
Рейтинг: 0 / 0
Alter function
    #39855701
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShakillL_argoНо обнаружил, что для табличных ф-ций альтер фейлится, т.е. нельзя альтером поменять тип ф-ции со скалярного в табличный.
а почему вам надо менять тип функции со скалярного в табличный при помощи alter?
они хоть и называются все "функции", но это три отдельных типа объектов: скалярные, табличные инлайн, табличные многострочные
потому что в 2008 O_o нет CREATE OR ALTER
...
Рейтинг: 0 / 0
Alter function
    #39855704
Фотография Shakill
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TaPaKShakillпропущено...

а почему вам надо менять тип функции со скалярного в табличный при помощи alter?
они хоть и называются все "функции", но это три отдельных типа объектов: скалярные, табличные инлайн, табличные многострочные
потому что в 2008 O_o нет CREATE OR ALTER
вопрос не про create, а почему автор через alter хочет кардинально сменить тип объекта. ну то есть alter скалярки в табличную это примерно то же самое, что alter скалярки в процедуру; тут же никто не будет удивляться, что не работает
...
Рейтинг: 0 / 0
Alter function
    #39855706
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShakillTaPaKпропущено...

потому что в 2008 O_o нет CREATE OR ALTER
вопрос не про create, а почему автор через alter хочет кардинально сменить тип объекта. ну то есть alter скалярки в табличную это примерно то же самое, что alter скалярки в процедуру; тут же никто не будет удивляться, что не работает
вы нипанимаете(с)
он хочет всё время делать алтер, но если объекта нет, то он рисует его, и вот рисовать его тоже надо правильным.
...
Рейтинг: 0 / 0
Alter function
    #39855707
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг ХупинавторПочему именно такой способ создания/обновления объектов ?
Он самый оптимальный, ИМХО. Лучше, чем Дроп + криейт.


и почему так имхуется?
Иногда дроп+креате лучше.

при drop + create теряются все права на объект
...
Рейтинг: 0 / 0
Alter function
    #39855712
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
msLexРолг Хупинпропущено...


и почему так имхуется?
Иногда дроп+креате лучше.

при drop + create теряются все права на объект
это у тех кто не способен в роли и гранты прописывать на этапе разработке, а у тех кто мышкой дба наклацывают гранты возникают такие танцы
...
Рейтинг: 0 / 0
Alter function
    #39855715
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TaPaKCREATE OR ALTERТоже ТСа не спасет.
...
Рейтинг: 0 / 0
Alter function
    #39855716
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
invmTaPaKCREATE OR ALTERТоже ТСа не спасет.
а он сейчас что по вашему делает :)
...
Рейтинг: 0 / 0
Alter function
    #39855725
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
L_argo,

при работе с проектом базы в Visual Studio проблем в принципе не возникает, т.к. студия полностью автоматизирует дропы-криэйты.
...
Рейтинг: 0 / 0
Alter function
    #39855762
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
msLexРолг Хупинпропущено...


и почему так имхуется?
Иногда дроп+креате лучше.

при drop + create теряются все права на объект

так и подумал, так это решается при разумном подходе...
...
Рейтинг: 0 / 0
Alter function
    #39855771
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще тема кажется надуманной, т.к. использование скалярных и табличных функций синтаксически разное. Т.е. одним "переименованием" не обойдёшься.
...
Рейтинг: 0 / 0
Alter function
    #39855815
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав КолосовВообще тема кажется надуманной, т.к. использование скалярных и табличных функций синтаксически разное. Т.е. одним "переименованием" не обойдёшься.Лень, матушка...
...
Рейтинг: 0 / 0
Alter function
    #39856132
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TaPaKmsLexпри drop + create теряются все права на объект
это у тех кто не способен в роли и гранты прописывать на этапе разработке, а у тех кто мышкой дба наклацывают гранты возникают такие танцыДа, права не проблема.
Главная проблема в том, что при при drop + create в течении некоторого времени объекта не существует, и попытки его использования приведут к ошибкам. Что исключает применение некоторых удобных сценариев процесса разработки

ИМХО нужно всегда делать ALTER, т.е. писать скрипты так, как в первом посте ТС.

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

Если же вдруг (!) нужно поменять тип ф-ции со скалярного в табличный, то действуем так же, как при необходимости заменить процедуру на таблицу (ну, или на линкед-сервер, или на каталог полнотекстового поиска), то есть удаляем один объект, и создаём другой
...
Рейтинг: 0 / 0
Alter function
    #39856169
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvg,
авторГлавная проблема в том, что при при drop + create в течении некоторого времени объекта не существует, и попытки его использования приведут к ошибкам. Что исключает применение некоторых удобных сценариев процесса разработки

интересно, мы меняем объект или группу связаных расчётами объектов и при этом мы никак не можем сказать на чём же отработали в момент нашего алтера
...
Рейтинг: 0 / 0
Alter function
    #39856171
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvgИМХО нужно всегда делать ALTER, т.е. писать скрипты так, как в первом посте ТС.+1

при работе с проектом базы в Visual Studio проблем в принципе не возникает,Возникает другая проблема - необходимость использования Студии. А цель была - минимизировать до нуля использование сторонних средств.
Т.е. оставить только скрипты и механизм их обработки и создания.

Н-р генерация начальной пустой БД начинается с автоматического наката набора скриптов.
Следующий шаг - заливка начальных данных из CSV.
...
Рейтинг: 0 / 0
Alter function
    #39856208
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TaPaKalexeyvg,
авторГлавная проблема в том, что при при drop + create в течении некоторого времени объекта не существует, и попытки его использования приведут к ошибкам. Что исключает применение некоторых удобных сценариев процесса разработки

интересно, мы меняем объект или группу связаных расчётами объектов и при этом мы никак не можем сказать на чём же отработали в момент нашего алтераДа, в целом так и есть.

Я не говорю, что это единственно правильный вариант, но он вполне возможен, собственно, само наличие конструкции ALTER именно это и предполагает.

И вообще, по моему, любой механизм обновления без остановки сервиса предполагает именно это - "мы никак не можем сказать на чём же отработали в момент нашего <тут подставить некое действие во время обновления>", без дополнительного логирования.
...
Рейтинг: 0 / 0
Alter function
    #39856234
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
L_argo,

"На коленке" тянуть корпоративный многосерверный многобазовый проект без студии не то, чтобы сложно, а очень сложно. Если проект односерверный однобазовый, то проблем становится меньше и еще как-то худо-бедно с доморощенным тестированием или вовсе без него можно. Но все равно остается проблема девопса, довольно раздражающая.

Следует заметить, что комьюнити студию в лицензии разрешается использовать при разработке коммерческой БД, если она используется только для разработки БД совместно с DataTools. Так что проблем в использовании студии вообще нет.
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Alter function
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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