powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Можно ли "подменить" код процедуры/функции? Не rename.
16 сообщений из 16, страница 1 из 1
Можно ли "подменить" код процедуры/функции? Не rename.
    #40109792
abrashka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
День добрый!
Интересует такой вопрос.
Например есть функции MyFunction_1 и MyFunction_2. Есть ли какая-нибудь возможность заменить код MyFunction_1 кодом из MyFunction_2? Т.е. чтоб MyFunction_1 и MyFunction_2 стали одинаковыми, не удаляя MyFunction_2.
На сколько я понимаю- можно удалить MyFunction_1 и переименовать второю функцию, дав ей имя удаленной, но нужно именно сохранить вторую функцию тоже.
Можно ли такое сделать при помощи кода?

Спасибо!
...
Рейтинг: 0 / 0
Можно ли "подменить" код процедуры/функции? Не rename.
    #40109797
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
abrashka,

ALTER FUNCTION
...
Рейтинг: 0 / 0
Можно ли "подменить" код процедуры/функции? Не rename.
    #40109801
abrashka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосов,

В каком смысле Alter?
У меня две функции:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
CREATE FUNCTION MyFunction_1 (@n INT)
RETURNS INT
AS
BEGIN
	RETURN @n*2
END


CREATE FUNCTION MyFunction_2 (@n INT)
RETURNS INT
AS
BEGIN
	RETURN 10+@n
END


Мне нужно изменить функцию MyFunction_1 чтоб она выполняла кода как во второй функции.
Если я удалю MyFunction_1 и запущу
Код: sql
1.
sp_rename 'dbo.MyFunction_2','MyFunction_1'


То да, я добъюсь необходимого результата, но таким образом исчезнет функция MyFunction_2, но мне нужно чтоб она осталась в базе данных. Поэтому я написал, что чистый rename не подходит.
...
Рейтинг: 0 / 0
Можно ли "подменить" код процедуры/функции? Не rename.
    #40109803
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
abrashka
Мне нужно изменить функцию MyFunction_1 чтоб она выполняла кода как во второй функции.

Это и делает ALTER FUNCTION.
...
Рейтинг: 0 / 0
Можно ли "подменить" код процедуры/функции? Не rename.
    #40109814
abrashka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

Спасибо! Я может не совсем понятно задал вопрос. Мне не нужно руками копировать код и менять функцию.
Мне нужно написать код, скажем процедуру, которая получает параметры первой и второй функции и сама делает "ALTER".
...
Рейтинг: 0 / 0
Можно ли "подменить" код процедуры/функции? Не rename.
    #40109815
abrashka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Получает имена первой и второй функций.
...
Рейтинг: 0 / 0
Можно ли "подменить" код процедуры/функции? Не rename.
    #40109817
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если в переменную записать имя функции, то можно вызывать функцию через эту переменную.
Переписать переменную именем другой функции - и вызываться будет она. Переменную лучше создать типа sysname.
...
Рейтинг: 0 / 0
Можно ли "подменить" код процедуры/функции? Не rename.
    #40109818
abrashka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iap,

Спасибо! Такое решение не очень подходит. Там долгая история...
На данном этапе самое подходящее:
1. Как-нибудь клонировать вторую функцию.
2. Удалить первую функцию.
3. Переименовать клонированную функцию, дать ей имя удаленной.

Вопрос стоит в том: "как клонировать" :(
...
Рейтинг: 0 / 0
Можно ли "подменить" код процедуры/функции? Не rename.
    #40109821
Фотография Ennor Tiegael
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
abrashka
Мне нужно написать код, скажем процедуру, которая получает параметры первой и второй функции и сама делает "ALTER".
Начать можно отсюда: sys.sql_modules . Параметры ваших функций можно вытащить из sys.parameters, кажется.
...
Рейтинг: 0 / 0
Можно ли "подменить" код процедуры/функции? Не rename.
    #40109825
abrashka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ennor Tiegael,

Спасибо огромное! Сейчас копаю именно в этом направлении.

Думал что есть что-то более простое, типа alter with rename, такое есть в vertica кажется.
...
Рейтинг: 0 / 0
Можно ли "подменить" код процедуры/функции? Не rename.
    #40109830
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может хакеру-страдальцу про синонимы рассказать?
...
Рейтинг: 0 / 0
Можно ли "подменить" код процедуры/функции? Не rename.
    #40109842
abrashka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleks222,

Не нужно рассказывать про синонимы, спасибо! хакер-страдалец в курсе... Использование синонимов тоже не подходит.

Использование sys.sql_modules подходит до тех пор, пока речь не идет об CLR :(
...
Рейтинг: 0 / 0
Можно ли "подменить" код процедуры/функции? Не rename.
    #40109903
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
abrashka,

а в чём вообще состоит задача?
...
Рейтинг: 0 / 0
Можно ли "подменить" код процедуры/функции? Не rename.
    #40109916
Фотография Ennor Tiegael
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосов
abrashka,

а в чём вообще состоит задача?
ТС, поди, про SSDT не в курсе, вот и пишет свой велосипед...
...
Рейтинг: 0 / 0
Можно ли "подменить" код процедуры/функции? Не rename.
    #40109932
Gerasimenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторМожно ли "подменить" код процедуры/функции?

И вот вместо всего этого, что мешает из одной функции вызвать другую, закомментировав (задав невыполнимое условие) код первой?
...
Рейтинг: 0 / 0
Можно ли "подменить" код процедуры/функции? Не rename.
    #40109956
Oleg_SQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
abrashka,

1. Вызывать по условию нужную функцию и ничего не менять
2. Создать третью функцию, которая будет вызывать 1-ю или 2-ю по некоему параметру.
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Можно ли "подменить" код процедуры/функции? Не rename.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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