Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3   вперед  Ctrl      все
 Re: Табличные функции и процедуры  [new]
Glory
Member

Откуда:
Сообщений: 104751
lex452
AHAPXuCT
lex452,

Нет Лёх, данные вернутся, будучи отсортированными, в том порядке, в каком их заносили в эту таблицу.



Нет возвращаются не отсортированные, я же говорю что делал так

Я думаю, что уровень ваших знаний не позволяет вам делать такие однозначные утверждения
Если вы не получили тот порядок, который _вы считаете_ правильным, то это на значит, что _ваши рассчеты_ правильны
29 окт 15, 10:30    [18341853]     Ответить | Цитировать Сообщить модератору
 Re: Табличные функции и процедуры  [new]
Mike_za
Member

Откуда: Москва
Сообщений: 1176
А у кого исходники приложения?
29 окт 15, 10:38    [18341919]     Ответить | Цитировать Сообщить модератору
 Re: Табличные функции и процедуры  [new]
lex452
Member

Откуда:
Сообщений: 590
Mike_za
А у кого исходники приложения?

Недоступны, но известно, что в настройках указывается функция, а приложение делает select * from [функция] без сортировки
29 окт 15, 10:42    [18341950]     Ответить | Цитировать Сообщить модератору
 Re: Табличные функции и процедуры  [new]
X-Cite
Member

Откуда: Минск
Сообщений: 1838
Создай многооператорную табличную функцию.
В ней во временную таблицу из двух столбцов запихни данные в отсортированном порядке при том в первом столбце пронумеруй записи как тебе нужно. Создай кластерный индекс по пронумерованому полю. и затем выбери из нее... в 99% оптимизатор выберет данные по индексу, и вы получите псевдосортировку. Правда не гарантированно что всегда будет выборка отсортирована как вам нужно.
29 окт 15, 10:49    [18342008]     Ответить | Цитировать Сообщить модератору
 Re: Табличные функции и процедуры  [new]
lex452
Member

Откуда:
Сообщений: 590
X-Cite
Создай многооператорную табличную функцию.
В ней во временную таблицу из двух столбцов запихни данные в отсортированном порядке при том в первом столбце пронумеруй записи как тебе нужно. Создай кластерный индекс по пронумерованому полю. и затем выбери из нее... в 99% оптимизатор выберет данные по индексу, и вы получите псевдосортировку. Правда не гарантированно что всегда будет выборка отсортирована как вам нужно.

В том то и дело что негарантированно меня не устраивает
29 окт 15, 10:50    [18342016]     Ответить | Цитировать Сообщить модератору
 Re: Табличные функции и процедуры  [new]
X-Cite
Member

Откуда: Минск
Сообщений: 1838
lex452
В том то и дело что негарантированно меня не устраивает

Цитата их официального учебного курса:
Ицик Бен-Ган
Единственный способ действительно гарантировать возвращение строк запросом в определенном порядке — добавить предложение ORDER BY.
29 окт 15, 11:00    [18342076]     Ответить | Цитировать Сообщить модератору
 Re: Табличные функции и процедуры  [new]
lex452
Member

Откуда:
Сообщений: 590
Ладно спасибо всем за помощь, но в результате походу не суждено мне сделать то что надо.
29 окт 15, 11:02    [18342089]     Ответить | Цитировать Сообщить модератору
 Re: Табличные функции и процедуры  [new]
граблерук
Guest
lex452
Mike_za
А у кого исходники приложения?

Недоступны, но известно, что в настройках указывается функция, а приложение делает select * from [функция] без сортировки

тогда может на уровне приложения есть возможность настроить сортировку?
может приложение умеет и хранимки дергать?
29 окт 15, 11:03    [18342094]     Ответить | Цитировать Сообщить модератору
 Re: Табличные функции и процедуры  [new]
Glory
Member

Откуда:
Сообщений: 104751
lex452
Ладно спасибо всем за помощь, но в результате походу не суждено мне сделать то что надо.

Очень трудно что-то сделать,... ничего не делая.
29 окт 15, 11:03    [18342099]     Ответить | Цитировать Сообщить модератору
 Re: Табличные функции и процедуры  [new]
lex452
Member

Откуда:
Сообщений: 590
граблерук
lex452
пропущено...

Недоступны, но известно, что в настройках указывается функция, а приложение делает select * from [функция] без сортировки

тогда может на уровне приложения есть возможность настроить сортировку?
может приложение умеет и хранимки дергать?


нет не умеет. возможноси тоже нет
29 окт 15, 11:04    [18342100]     Ответить | Цитировать Сообщить модератору
 Re: Табличные функции и процедуры  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
В функции:
SELECT TOP(9223372036854775807) ... FROM ... ORDER BY <ПолеСортировки>
29 окт 15, 11:05    [18342112]     Ответить | Цитировать Сообщить модератору
 Re: Табличные функции и процедуры  [new]
Adx
Guest
Я не понимаю, ТС все разжевали. Уже в первом ответе, кстати.
Пока в результирующем запросе нет ORDER BY, серверу абсолютно все равно в каком порядке хранятся записи в таблице. Само по себе наличие ключей, дат, автоинкрементных полей ничего не даст (или хуже того, даст иллюзию, что все получилось).
В функции пишем:

RETURNS TABLE
AS
RETURN 
( select value from MyTable order by id)


где поле id отвечает за порядок сортировки. На выходе один столбец, отсортированный в нужном порядке.
Дальше все зависит от софта, который использует функцию. Гарантировать порядок может только ORDER BY в запросе.
PS Обычно рекомендуется продемонстрировать код, который у Вас "не работает".
29 окт 15, 11:06    [18342122]     Ответить | Цитировать Сообщить модератору
 Re: Табличные функции и процедуры  [new]
lex452
Member

Откуда:
Сообщений: 590
Glory
lex452
Ладно спасибо всем за помощь, но в результате походу не суждено мне сделать то что надо.

Очень трудно что-то сделать,... ничего не делая.

Уже замечал, что пользы от ваших советов практически нет, только саркастические подтрунивания над людьми обратившимися к форуму за помощью.
Лучше вообще ничего не пишите чем так.

Мне не подсказали ни одного рабочего варианта, который я сам бы уже не попробовал до обращения. Спасибо за внимание
29 окт 15, 11:07    [18342123]     Ответить | Цитировать Сообщить модератору
 Re: Табличные функции и процедуры  [new]
Glory
Member

Откуда:
Сообщений: 104751
lex452
Уже замечал, что пользы от ваших советов практически нет, только саркастические подтрунивания над людьми обратившимися к форуму за помощью.
Лучше вообще ничего не пишите чем так.

Мой уровень ответов соответствует уровню ваших "знаний".
Если вы не понимаете ответов с 1го раза, то не не пишите сюда.

lex452
Мне не подсказали ни одного рабочего варианта, который я сам бы уже не попробовал до обращения. Спасибо за внимание

Потому что на тупые "я хочу вот так само" нет рабочих вариантов.
29 окт 15, 11:09    [18342142]     Ответить | Цитировать Сообщить модератору
 Re: Табличные функции и процедуры  [new]
lex452
Member

Откуда:
Сообщений: 590
Adx
Я не понимаю, ТС все разжевали. Уже в первом ответе, кстати.
Пока в результирующем запросе нет ORDER BY, серверу абсолютно все равно в каком порядке хранятся записи в таблице. Само по себе наличие ключей, дат, автоинкрементных полей ничего не даст (или хуже того, даст иллюзию, что все получилось).
В функции пишем:

RETURNS TABLE
AS
RETURN 
( select value from MyTable order by id)


где поле id отвечает за порядок сортировки. На выходе один столбец, отсортированный в нужном порядке.
Дальше все зависит от софта, который использует функцию. Гарантировать порядок может только ORDER BY в запросе.
PS Обычно рекомендуется продемонстрировать код, который у Вас "не работает".

Мне уже надоело писать одно и то же. Есть ряд ограничений по дальнейшему использованию:
1. Выполняется select * from функция БЕЗ сортировки
2. Нельзя выбрать определенный столбец
3. Нельзя чтобы в результатах были посторонние данные (типа ID)
29 окт 15, 11:10    [18342144]     Ответить | Цитировать Сообщить модератору
 Re: Табличные функции и процедуры  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Adx
Я не понимаю, ТС все разжевали. Уже в первом ответе, кстати.
Пока в результирующем запросе нет ORDER BY, серверу абсолютно все равно в каком порядке хранятся записи в таблице. Само по себе наличие ключей, дат, автоинкрементных полей ничего не даст (или хуже того, даст иллюзию, что все получилось).
В функции пишем:

RETURNS TABLE
AS
RETURN 
( select value from MyTable order by id)



где поле id отвечает за порядок сортировки. На выходе один столбец, отсортированный в нужном порядке.
Дальше все зависит от софта, который использует функцию. Гарантировать порядок может только ORDER BY в запросе.
PS Обычно рекомендуется продемонстрировать код, который у Вас "не работает".
И это работает?! Не может быть!
29 окт 15, 11:11    [18342155]     Ответить | Цитировать Сообщить модератору
 Re: Табличные функции и процедуры  [new]
Glory
Member

Откуда:
Сообщений: 104751
lex452
Мне уже надоело писать одно и то же. Есть ряд ограничений по дальнейшему использованию:
1. Выполняется select * from функция БЕЗ сортировки
2. Нельзя выбрать определенный столбец
3. Нельзя чтобы в результатах были посторонние данные (типа ID)

И что вы тогда _можете_ сделать то ?
Сидеть в форуме и повторять мантру "мне нужно, мне нужно" ?
29 окт 15, 11:11    [18342160]     Ответить | Цитировать Сообщить модератору
 Re: Табличные функции и процедуры  [new]
lex452
Member

Откуда:
Сообщений: 590
Adx
Я не понимаю, ТС все разжевали. Уже в первом ответе, кстати.
Пока в результирующем запросе нет ORDER BY, серверу абсолютно все равно в каком порядке хранятся записи в таблице. Само по себе наличие ключей, дат, автоинкрементных полей ничего не даст (или хуже того, даст иллюзию, что все получилось).
В функции пишем:

RETURNS TABLE
AS
RETURN 
( select value from MyTable order by id)


где поле id отвечает за порядок сортировки. На выходе один столбец, отсортированный в нужном порядке.
Дальше все зависит от софта, который использует функцию. Гарантировать порядок может только ORDER BY в запросе.
PS Обычно рекомендуется продемонстрировать код, который у Вас "не работает".

Ваша сортировка
RETURNS TABLE
AS
RETURN 
( select value from MyTable order by id)


слетит при запросе из данной функции в том и проблема
29 окт 15, 11:12    [18342162]     Ответить | Цитировать Сообщить модератору
 Re: Табличные функции и процедуры  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
lex452
Adx
Я не понимаю, ТС все разжевали. Уже в первом ответе, кстати.
Пока в результирующем запросе нет ORDER BY, серверу абсолютно все равно в каком порядке хранятся записи в таблице. Само по себе наличие ключей, дат, автоинкрементных полей ничего не даст (или хуже того, даст иллюзию, что все получилось).
В функции пишем:

RETURNS TABLE
AS
RETURN 
( select value from MyTable order by id)



где поле id отвечает за порядок сортировки. На выходе один столбец, отсортированный в нужном порядке.
Дальше все зависит от софта, который использует функцию. Гарантировать порядок может только ORDER BY в запросе.
PS Обычно рекомендуется продемонстрировать код, который у Вас "не работает".

Ваша сортировка
RETURNS TABLE
AS
RETURN 
( select value from MyTable order by id)



слетит при запросе из данной функции в том и проблема
Профессиональный комментарий, ничего не скажешь!
Причём, к коду, который даже не скомпилируется.
29 окт 15, 11:13    [18342175]     Ответить | Цитировать Сообщить модератору
 Re: Табличные функции и процедуры  [new]
Adx
Guest
lex452
Мне не подсказали ни одного рабочего варианта, который я сам бы уже не попробовал до обращения. Спасибо за внимание


Вам сразу сказали, что без ORDER BY нельзя, стали предлагать обходные варианты. В чем тут подтрунивание?
Кроме того, Вы не привели ни кода, ни принципа сортировки, ни способа вставки в таблицу, даже того, как Вы определили, что порядок неверен. Я, наоборот, удивлен, что все сразу кинулись помогать.
29 окт 15, 11:14    [18342187]     Ответить | Цитировать Сообщить модератору
 Re: Табличные функции и процедуры  [new]
lex452
Member

Откуда:
Сообщений: 590
iap
lex452
пропущено...

Ваша сортировка
RETURNS TABLE
AS
RETURN 
( select value from MyTable order by id)



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

Я в курсе что он не скомпилируется, но изначально не я его прислал
29 окт 15, 11:15    [18342191]     Ответить | Цитировать Сообщить модератору
 Re: Табличные функции и процедуры  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
lex452
iap
пропущено...
Профессиональный комментарий, ничего не скажешь!
Причём, к коду, который даже не скомпилируется.

Я в курсе что он не скомпилируется, но изначально не я его прислал
И чем же не устраивает компилирующийся вариант?
29 окт 15, 11:18    [18342212]     Ответить | Цитировать Сообщить модератору
 Re: Табличные функции и процедуры  [new]
o-o
Guest
lex452
Мне уже надоело писать одно и то же. Есть ряд ограничений по дальнейшему использованию:
1. Выполняется select * from функция БЕЗ сортировки

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

К сообщению приложен файл. Размер - 47Kb
29 окт 15, 11:26    [18342265]     Ответить | Цитировать Сообщить модератору
 Re: Табличные функции и процедуры  [new]
lex452
Member

Откуда:
Сообщений: 590
iap,


CREATE FUNCTION dbo.MyFunction ()
RETURNS @Result TABLE 
(
    resultColumn varchar(max) NOT NULL
    
)
AS
BEGIN
Declare @tableTemp table (
ID int IDENTITY (1,1) NOT NULL,
columnTemp varchar(max) NOT NULL
			)
Insert @tableTemp (columnTemp)
Values(‘Я’)
Insert @tableTemp (columnTemp)
Values(‘так’)
Insert @tableTemp (columnTemp)
Values(‘уже’)
Insert @tableTemp (columnTemp)
Values(‘пробовал’)


Insert Result

Select columnTemp from @ tableTemp order by ID
return
END

Select * from dbo.MyFunction()
Возвращает результат в порядке отличном от сортировки внутри функции
29 окт 15, 11:26    [18342267]     Ответить | Цитировать Сообщить модератору
 Re: Табличные функции и процедуры  [new]
Adx
Guest
iap
Причём, к коду, который даже не скомпилируется.


Разве я писал, что этот код будет работать? Это "кусок" функции. Я же больше ничего не знаю про функцию и структуры данных TC.
Если функцию написать целиком, название параметры, добавить TOP все отлично скомпилится.

lex452
Ваша сортировка
RETURNS TABLE
AS
RETURN 
( select value from MyTable order by id)


слетит при запросе из данной функции в том и проблема


Да, гарантии нет. Но, кстати, как Вы определили, что она "слетает"?
Про одно поле. Посмотрите внимательно, функция возвращает таблицу с одним полем. Почему Вы все время делаете на это упор?
29 окт 15, 11:30    [18342297]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить