Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как изменить кол-во столбцов в выводе ХП с помощью WITH RESULT SETS?  [new]
pacha
Member

Откуда:
Сообщений: 239
Добрый день! Встретил в статье MSDN такую фразу
The actual result set being returned during execution can differ from the result defined using the WITH RESULT SETS clause in one of the following ways: number of result sets, number of columns, column name, nullability, and data type. If the number of result sets differs, an error occurs and the batch is aborted.
. Нигде не нашел пример, как же все-таки изменить количество столбцов в выводе хранимой процедуры. Во всех примерах только переименование столбцов вывода, что есть по сути бесполезное действие.
24 окт 14, 10:02    [16752356]     Ответить | Цитировать Сообщить модератору
 Re: Как изменить кол-во столбцов в выводе ХП с помощью WITH RESULT SETS?  [new]
StarikNavy
Member

Откуда: Москва
Сообщений: 2397
pacha,

...

if ...
select 1,2,3

if ...
select 3,1
24 окт 14, 10:15    [16752412]     Ответить | Цитировать Сообщить модератору
 Re: Как изменить кол-во столбцов в выводе ХП с помощью WITH RESULT SETS?  [new]
pacha
Member

Откуда:
Сообщений: 239
StarikNavy, меня интересует вывод системной хранимки. В структуру ее я лезть не могу
24 окт 14, 10:17    [16752421]     Ответить | Цитировать Сообщить модератору
 Re: Как изменить кол-во столбцов в выводе ХП с помощью WITH RESULT SETS?  [new]
Glory
Member

Откуда:
Сообщений: 104751
pacha
Встретил в статье MSDN такую фразу

Вы ее до конца то дочитали ?
The actual result set being returned during execution can differ from the result defined using the WITH RESULT SETS clause in one of the following ways: number of result sets, number of columns, column name, nullability, and data type. If the number of result sets differs, an error occurs and the batch is aborted.
24 окт 14, 10:50    [16752633]     Ответить | Цитировать Сообщить модератору
 Re: Как изменить кол-во столбцов в выводе ХП с помощью WITH RESULT SETS?  [new]
pacha
Member

Откуда:
Сообщений: 239
Glory, дочитал. Number of result sets, но никак не number of columns.
24 окт 14, 10:51    [16752644]     Ответить | Цитировать Сообщить модератору
 Re: Как изменить кол-во столбцов в выводе ХП с помощью WITH RESULT SETS?  [new]
Glory
Member

Откуда:
Сообщений: 104751
pacha
Glory, дочитал. Number of result sets, но никак не number of columns.

select * from sysmessages where error = 11537 and msglangid = 1033
24 окт 14, 11:01    [16752724]     Ответить | Цитировать Сообщить модератору
 Re: Как изменить кол-во столбцов в выводе ХП с помощью WITH RESULT SETS?  [new]
invm
Member

Откуда: Москва
Сообщений: 9683
pacha
Нигде не нашел пример, как же все-таки изменить количество столбцов в выводе хранимой процедуры.
Потому что такого примера нет. У предложения with result sets другое предназначение.
<result_sets_definition>Provides a guarantee that the result will come back as specified in the result_sets_definition. For statements that return multiple result sets, provide multiple result_sets_definition sections. Enclose each result_sets_definition in parentheses, separated by commas. For more information, see <result_sets_definition> later in this topic.
24 окт 14, 11:05    [16752754]     Ответить | Цитировать Сообщить модератору
 Re: Как изменить кол-во столбцов в выводе ХП с помощью WITH RESULT SETS?  [new]
Glory
Member

Откуда:
Сообщений: 104751
column_name
The names of each column. If the number of columns differs from the result set, an error occurs and the batch is aborted. If the name of a column differs from the result set, the column name returned will be set to the name defined.
24 окт 14, 11:06    [16752762]     Ответить | Цитировать Сообщить модератору
 Re: Как изменить кол-во столбцов в выводе ХП с помощью WITH RESULT SETS?  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8485
pacha
Во всех примерах только переименование столбцов вывода, что есть по сути бесполезное действие.


Назначение WITH RESULT SETS - гарантировать тип и название полей результирующего набора.
Заявление о бесполезности ошибочно, т.к. клиент приложения рассчитан на определенные типы и имена данных. Если в базе производится какой-либо рефакторинг, то WITH RESULT SETS может быть очень полезным.
24 окт 14, 11:34    [16752909]     Ответить | Цитировать Сообщить модератору
 Re: Как изменить кол-во столбцов в выводе ХП с помощью WITH RESULT SETS?  [new]
pacha
Member

Откуда:
Сообщений: 239
invm, Glory, Владислав Колосов - спасибо, теперь разобрался
24 окт 14, 11:43    [16752989]     Ответить | Цитировать Сообщить модератору
 Re: Как изменить кол-во столбцов в выводе ХП с помощью WITH RESULT SETS?  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
Владислав Колосов
pacha
Во всех примерах только переименование столбцов вывода, что есть по сути бесполезное действие.


Назначение WITH RESULT SETS - гарантировать тип и название полей результирующего набора.
Заявление о бесполезности ошибочно, т.к. клиент приложения рассчитан на определенные типы и имена данных. Если в базе производится какой-либо рефакторинг, то WITH RESULT SETS может быть очень полезным.
Ну и еще очень удобно, когда клиент по каким либо причинам не может получить метаданные до выполнения запроса. Например, извечная проблема, SSIS вызывающий процедуру в которой используются временные таблицы.
24 окт 14, 20:40    [16756256]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить