powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / ALTER FUNCTION в скрипте
9 сообщений из 9, страница 1 из 1
ALTER FUNCTION в скрипте
    #39645667
Anatoliy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть скрипт, который выполняет различные изменения при апдейте приложения к следующей версии.
Т.е. в скрипте масса различных инструкций типа
ALTER PROCEDURE; ALTER TABLE, etc.
Но все они выполняются как бы отдельными инструкциями. Т.е. следующий код в скрипте работает:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
ALTER FUNCTION [dbo].[ufnGetAccountingEndDate]()
RETURNS [datetime] 
AS 
BEGIN
    RETURN DATEADD(millisecond, -2, CONVERT(datetime, '20040701', 112));
END;

GO 



Но мне понадобилось выполнять этот ALTER FUNCTION при определенном условии:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
-- Check some condition for run ALTER FUNCTION:
IF 1 > 0 -- here will real check condition
BEGIN
	ALTER FUNCTION [dbo].[ufnGetAccountingEndDate]()
	RETURNS [datetime] 
	AS 
	BEGIN
		RETURN DATEADD(millisecond, -2, CONVERT(datetime, '20040701', 112));
	END

END



И получается, что внутри вот этого BEGIN - END выполнить ALTER FUNCTION невозможно.
MSDN говорит, что внутри хранимой процедуры невозможно выполнять определенные стейтменты. Но тут ведь не сторед процедура. Это скрипт.
Есть ли какой-то обход данного ограничения?
...
Рейтинг: 0 / 0
ALTER FUNCTION в скрипте
    #39645675
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoliy,

msdn говорит что CREATE/ALTER должны быть первыми в батче. Для Вашего подхода только засовывать в динамику
...
Рейтинг: 0 / 0
ALTER FUNCTION в скрипте
    #39645683
Anatoliy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Под динрамикой вы имеете в виду что-то типа
Код: sql
1.
execute dbo.sp_executesql @statement = N'ALTER FUNCTION ….'


?
...
Рейтинг: 0 / 0
ALTER FUNCTION в скрипте
    #39645685
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AnatoliyПод динрамикой вы имеете в виду что-то типа
Код: sql
1.
execute dbo.sp_executesql @statement = N'ALTER FUNCTION ….'


?
да.
Где то здесь рассматривали вариант через откат транзакций при условии, можете поискать. Но всё это не здраво :)
...
Рейтинг: 0 / 0
ALTER FUNCTION в скрипте
    #39645686
Tactical Nuclear Penguin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AnatoliyПод динрамикой вы имеете в виду что-то типа
Код: sql
1.
execute dbo.sp_executesql @statement = N'ALTER FUNCTION ….'


?

тынц
...
Рейтинг: 0 / 0
ALTER FUNCTION в скрипте
    #39645687
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tactical Nuclear PenguinAnatoliyПод динрамикой вы имеете в виду что-то типа
Код: sql
1.
execute dbo.sp_executesql @statement = N'ALTER FUNCTION ….'


?

тынц
просто на почитать? К вопросу то никак не относится
...
Рейтинг: 0 / 0
ALTER FUNCTION в скрипте
    #39645690
Anatoliy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо! Буду пробовать через sp_executesql
...
Рейтинг: 0 / 0
ALTER FUNCTION в скрипте
    #39645694
Minamoto
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoliy, еще такой подход есть:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
if 1 > 1 set noexec on
go
create FUNCTION [dbo].[ufnGetAccountingEndDate]()
	RETURNS [datetime] 
	AS 
	BEGIN
		RETURN DATEADD(millisecond, -2, CONVERT(datetime, '20040701', 112));
	end
go
set noexec off
...
Рейтинг: 0 / 0
ALTER FUNCTION в скрипте
    #39645698
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Minamoto,

точно, по noexec тот топик и ищется
http://www.sql.ru/forum/1269224/skript-sozdaniya-procedur-po-nekotoromu-usloviu?hl=noexec
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / ALTER FUNCTION в скрипте
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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