Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Таблична ф-я вместо представления? / 12 сообщений из 12, страница 1 из 1
19.06.2013, 16:02
    #38303492
Cammomile
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таблична ф-я вместо представления?
Разбирая артефакты довольно старой базы, наткнулся на примерно вот такой код.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
CREATE FUNCTION [SchemaName].[ReturnTableNameFields]()
RETURNS @RESULT TABLE  ([ID] INT, [code] VARCHAR(50), [DESC] VARCHAR(250))
AS
BEGIN
  INSERT INTO @RESULT ([ID], [code], [DESC])	
    SELECT [ID], [code], [DESC] FROM [TableName]
  RETURN
END



В [TableName] гораздо больше полей. Т.е. подобные функции, очевидно, заменяют по функционалу вьюхи.

У меня теоритический вопрос. Для чего может использоваться такой подход? В чём его плюсы и минусы?
...
Рейтинг: 0 / 0
19.06.2013, 16:08
    #38303506
Сергей Викт.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таблична ф-я вместо представления?
CammomileРазбирая артефакты довольно старой базы, наткнулся на примерно вот такой код.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
CREATE FUNCTION [SchemaName].[ReturnTableNameFields]()
RETURNS @RESULT TABLE  ([ID] INT, [code] VARCHAR(50), [DESC] VARCHAR(250))
AS
BEGIN
  INSERT INTO @RESULT ([ID], [code], [DESC])	
    SELECT [ID], [code], [DESC] FROM [TableName]
  RETURN
END



В [TableName] гораздо больше полей. Т.е. подобные функции, очевидно, заменяют по функционалу вьюхи.

У меня теоритический вопрос. Для чего может использоваться такой подход? В чём его плюсы и минусы?

Как минимум возможность использовать переменные и инструкцию DECLARE
...
Рейтинг: 0 / 0
19.06.2013, 16:11
    #38303510
Cammomile
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таблична ф-я вместо представления?
т.е.?
...
Рейтинг: 0 / 0
19.06.2013, 16:17
    #38303525
Сергей Викт.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таблична ф-я вместо представления?
Cammomileт.е.?
Ну в представлении нельзя использовать переменные. А в функции можно.
Аль я ошибаюсь жестоко?:)
...
Рейтинг: 0 / 0
19.06.2013, 16:18
    #38303526
Cammomile
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таблична ф-я вместо представления?
Я спросил кокнретно про вот эту структуру. Тут не используются переменные, для создания фильтра? или для каких то вычислений.
...
Рейтинг: 0 / 0
19.06.2013, 16:21
    #38303532
Сергей Викт.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таблична ф-я вместо представления?
CammomileУ меня теоритический вопрос. Для чего может использоваться такой подход? В чём его плюсы и минусы?
Вы просто спросили так) Простите.. Я имел ввиду не только применительно к данной функции.
Именно в данном случае плюсов и минусов сказать не могу.
Можно посмотреть план выполнения запроса к представлению и к функции с какими-либо параметрами, может что прояснится)
...
Рейтинг: 0 / 0
19.06.2013, 16:25
    #38303535
Мистер Хенки
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таблична ф-я вместо представления?
Cammomile,

это не itv функция, а многострочная табличная функция, так что не может быть использована как представление.
Вот это itl функция или параметризованное представление:
Код: sql
1.
2.
3.
4.
5.
6.
7.
CREATE FUNCTION [SchemaName].[ReturnTableNameFields]()
RETURNS table
AS


  return(  SELECT [ID], [code], [DESC] FROM [TableName]);
  



В вашем случае вы получаете грубо говоря табличную переменную, как результат и отдельный план выполнения для функции, в случае с itl вы получите просто параметризованное представление, которое обработается сервером как и обычное представление.
...
Рейтинг: 0 / 0
19.06.2013, 16:28
    #38303538
baracs
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таблична ф-я вместо представления?
Cammomile,

Может, просто заглушка...
...
Рейтинг: 0 / 0
19.06.2013, 16:28
    #38303540
Shakill
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таблична ф-я вместо представления?
CammomileРазбирая артефакты довольно старой базы, наткнулся на примерно вот такой код.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
CREATE FUNCTION [SchemaName].[ReturnTableNameFields]()
RETURNS @RESULT TABLE  ([ID] INT, [code] VARCHAR(50), [DESC] VARCHAR(250))
AS
BEGIN
  INSERT INTO @RESULT ([ID], [code], [DESC])	
    SELECT [ID], [code], [DESC] FROM [TableName]
  RETURN
END



В [TableName] гораздо больше полей. Т.е. подобные функции, очевидно, заменяют по функционалу вьюхи.

У меня теоритический вопрос. Для чего может использоваться такой подход? В чём его плюсы и минусы?
в multiline utf внутренний запрос не встраивается во внешний, а выполняется независимо. таким образом можно во время выполнения внешнего запроса организовать нечто вроде неявной временной таблицы
...
Рейтинг: 0 / 0
19.06.2013, 17:58
    #38303737
Crimean
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таблична ф-я вместо представления?
Shakill,

+1, помогает оптимизатор "обмануть", именно multi-line
но в результирующей таблице, при этом, обычно, primary key как минимум декларят
...
Рейтинг: 0 / 0
19.06.2013, 18:07
    #38303755
Cammomile
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таблична ф-я вместо представления?
Учитывая то, что внутри этих функций селекты из справочников в которых буквально десятки строк, смысл всей этой эквиибристики ускользает. Видимо просто игры чьего-то разума.
...
Рейтинг: 0 / 0
19.06.2013, 18:45
    #38303829
Crimean
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таблична ф-я вместо представления?
CammomileУчитывая то, что внутри этих функций селекты из справочников в которых буквально десятки строк, смысл всей этой эквиибристики ускользает. Видимо просто игры чьего-то разума.

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


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