powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Обновление функции
13 сообщений из 13, страница 1 из 1
Обновление функции
    #38820990
Strength Class
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте.

Работаю в MS SQL Server Management Studio (2012).
В некоторых таблицах в качестве полей выступают вычислимые поля. Возникла необходимость обновить функцию, используемую в качестве значения поля. При обновлении возникает ошибка "Невозможно ALTER "dbo.CheckMechanical", так как на него ссылается объект "ProtocolInMetiz"". Как можно обновить функцию, не удаляя и не меняя созданные столбцы?
...
Рейтинг: 0 / 0
Обновление функции
    #38821000
Фотография Knyazev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Strength ClassКак можно обновить функцию, не удаляя и не меняя созданные столбцы?
никак
...
Рейтинг: 0 / 0
Обновление функции
    #38821025
aleks2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Knyazev AlexeyStrength ClassКак можно обновить функцию, не удаляя и не меняя созданные столбцы?
никак

Технически - можно.
Делаем функцию заглушку

f_FakeFunc(...) as return f_Func(...).

и пихаем ее в вычисляемый столбец.

Опосля чего f_Func(...) можно плющить як хочется.
...
Рейтинг: 0 / 0
Обновление функции
    #38821028
Фотография Knyazev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleks2Технически - можно.
Делаем функцию заглушку

да, неплохой вариант...но боюсь топикстартеру в любом случаи придётся начать с удаления ссылок на объекты и созданием этих самых заглушек
...
Рейтинг: 0 / 0
Обновление функции
    #38821040
aleks2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Knyazev Alexeyaleks2Технически - можно.
Делаем функцию заглушку

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

1. Вариант плохой. Ибо два вызова функции - это те не баран чихнул.

Но для мелких поделок - сойдет.

2. Дык, ему все одно их искать.
...
Рейтинг: 0 / 0
Обновление функции
    #38821334
Strength Class
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо. Попробую.
...
Рейтинг: 0 / 0
Обновление функции
    #38821341
Фотография Shakill
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleks2Knyazev Alexeyпропущено...

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

1. Вариант плохой. Ибо два вызова функции - это те не баран чихнул.

основную функцию можно оформить как табличную инлайн
...
Рейтинг: 0 / 0
Обновление функции
    #38821343
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shakillaleks2пропущено...


1. Вариант плохой. Ибо два вызова функции - это те не баран чихнул.

основную функцию можно оформить как табличную инлайнА смысл?
От неё всё равно требуется единственное значение на каждую строку таблицы.
...
Рейтинг: 0 / 0
Обновление функции
    #38821370
Фотография Shakill
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iapShakillпропущено...

основную функцию можно оформить как табличную инлайнА смысл?
От неё всё равно требуется единственное значение на каждую строку таблицы.я предполагал что накладные расходы на обращение из оберточной функции к инлайн табличной будут меньше чем к скалярной сами по себе. проверить пока не могу
...
Рейтинг: 0 / 0
Обновление функции
    #38821372
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shakilliapпропущено...
А смысл?
От неё всё равно требуется единственное значение на каждую строку таблицы.я предполагал что накладные расходы на обращение из оберточной функции к инлайн табличной будут меньше чем к скалярной сами по себе. проверить пока не могуПочти уверен, что отличий не будет.
...
Рейтинг: 0 / 0
Обновление функции
    #38821382
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iapПочти уверен, что отличий не будет.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
use tempdb;
go

create function dbo.fnBasic_Scalar
(
 @a int
)
returns int
as
begin
 return @a;
end;
go

create function dbo.fnWrapper1
(
 @a int
)
returns int
as
begin
 return dbo.fnBasic_Scalar(@a);
end;
go

create function dbo.fnBasic_Inline
(
 @a int
)
returns table
as
return (select @a as a);
go

create function dbo.fnWrapper2
(
 @a int
)
returns int
as
begin
 return (select top (1) a from dbo.fnBasic_Inline(@a));
end;
go

create table dbo.t (id int primary key, a1 as dbo.fnWrapper1(id), a2 as dbo.fnWrapper2(id));
go

insert into dbo.t
 (id)
 select top (1000000)
  row_number() over (order by rand())
 from
  master.dbo.spt_values a cross join
  master.dbo.spt_values b
go

declare @a int;

set statistics time on;
select @a = a1 from dbo.t;
select @a = a2 from dbo.t;
set statistics time off;

drop table dbo.t;
drop function dbo.fnWrapper1, dbo.fnWrapper2, dbo.fnBasic_Scalar, dbo.fnBasic_Inline;
go



Код: plaintext
1.
2.
3.
4.
Время работы SQL Server:
   Время ЦП = 8221 мс, затраченное время = 8380 мс.

 Время работы SQL Server:
   Время ЦП = 5413 мс, затраченное время = 5543 мс.
...
Рейтинг: 0 / 0
Обновление функции
    #38821467
Фотография Shakill
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
invm, спасибо

скалярная
SQL Server Execution Times:
CPU time = 13312 ms, elapsed time = 14336 ms.

табличная
SQL Server Execution Times:
CPU time = 7469 ms, elapsed time = 8279 ms.
...
Рейтинг: 0 / 0
Обновление функции
    #38821716
Gluck_13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
invm,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
-- Skipped
create table dbo.t (id int primary key, a1 as dbo.fnWrapper1(id), a2 as dbo.fnWrapper2(id)
  , a3 AS dbo.fnBasic_Scalar(id)
);
-- Skipped
select @a = a1 from dbo.t;
select @a = a2 from dbo.t;
select @a = a3 from dbo.t;



И, в сравнении с исходной ф-ей без обертки:
Время работы SQL Server:
Время ЦП = 9953 мс, затраченное время = 10331 мс.

Время работы SQL Server:
Время ЦП = 5803 мс, затраченное время = 6072 мс.

Время работы SQL Server:
Время ЦП = 2777 мс, затраченное время = 2989 мс.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Обновление функции
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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