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

Откуда:
Сообщений: 19
Добрый день, коллеги.
Никак не могу найти в интернете ...
Ситуация такая:
Есть SQL проца, возвращает в C# настроечные данные.
Но ещё и
select
, как табличную переменную; с этими простыми переменными хотелось бы получать.
Для того в SQL сделал табличный тип данных, !!!НО не могу этой табличной переменной сказать OUTPUT, ругается ...

create procedure [schema1].[sp_Settings_Get]
                         @dataTbl [schema1].TableType readonly output -- вот здесь ругается ...
                        ,@tryToTakeValue int = null output
as
.......


Выход есть, просто написать ещё одну процу, но это не комильфо.

Коллеги, есть варианты, соображения?

Заранее спасибо.
11 дек 19, 12:52    [22037689]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли возвращение табличной переменной из процедуры  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 30711
AlexKM2020
@dataTbl [schema1].TableType readonly output -- вот здесь ругается ...
Вот же, написано: readonly
Убрать readonly нельзя, в сиквеле табличные параметры запрещено менять. Не шмогли :-(

Сообщение было отредактировано: 11 дек 19, 13:05
11 дек 19, 13:04    [22037703]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли возвращение табличной переменной из процедуры  [new]
invm
Member

Откуда: Москва
Сообщений: 9114
Во-первых, желаемое невозможно.
Во-вторых, из процедур и так можно возвращать сколько угодно наборов данных, написав там обычные select'ы.
11 дек 19, 13:05    [22037705]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли возвращение табличной переменной из процедуры  [new]
AlexKM2020
Member

Откуда:
Сообщений: 19
alexeyvg, SQL ругается не на readonly, а на output

invm, спасибо.
но, это именно селектами, а надо OUTPUT, та как передача в C#.
Значит буду просто писать вторую процу, она как раз будет делать один селект.

Спасибо, коллеги.

Сообщение было отредактировано: 11 дек 19, 13:10
11 дек 19, 13:08    [22037710]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли возвращение табличной переменной из процедуры  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 30711
AlexKM2020
alexeyvg, SQL ругается не на readonly, а на output
Да, я вам про это и написал.
11 дек 19, 13:11    [22037714]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли возвращение табличной переменной из процедуры  [new]
msLex
Member

Откуда:
Сообщений: 7726
AlexKM2020
но, это именно селектами, а надо OUTPUT, та как передача в C#.

а в чем проблема в C# перебрать resultset-ы?
11 дек 19, 13:17    [22037718]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли возвращение табличной переменной из процедуры  [new]
Сон Веры Павловны
Member

Откуда:
Сообщений: 5619
AlexKM2020
но, это именно селектами, а надо OUTPUT, та как передача в C#.

И что же мешает в C# получить выборку из ХП? Это как раз в MSSQL с этим проблемы - есть ряд ситуаций, когда нельзя сделать insert into .. exec. А в C# это делается абсолютно естественным образом для любого количество резалтсетов.
11 дек 19, 13:17    [22037719]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли возвращение табличной переменной из процедуры  [new]
AlexKM2020
Member

Откуда:
Сообщений: 19
Сон Веры Павловны, да, я так и делал, одной большой выборкой, но это не здорово, много лишнего, потому просто двумя процами придётся...
А мелкомягким есть повод задуматься над возможностью возвращать табличные пользовательские типы данных...
11 дек 19, 13:25    [22037726]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли возвращение табличной переменной из процедуры  [new]
court
Member

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

в ХМЛ сериализируй и возвращай параметром
11 дек 19, 13:27    [22037727]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли возвращение табличной переменной из процедуры  [new]
Shakill
Member

Откуда: мск
Сообщений: 1870
AlexKM2020
Сон Веры Павловны, да, я так и делал, одной большой выборкой, но это не здорово, много лишнего, потому просто двумя процами придётся...

да почему одной большой, вам же говорят, что процедура может сделать несколько отдельных селектов, т.е. на выходе будет несколько отдельных резалтсетов и c#-приложение может их всех получить по отдельности
11 дек 19, 13:31    [22037730]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли возвращение табличной переменной из процедуры  [new]
AlexKM2020
Member

Откуда:
Сообщений: 19
Коллеги, спасибо за варианты!!!
Всё по делу!
11 дек 19, 13:34    [22037732]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли возвращение табличной переменной из процедуры  [new]
Владислав Колосов
Member

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

используйте функцию для получения данных, а не процедуру. В результате получите: известный набор возвращаемых атрибутов, возможность фильтра, сортировки, группировки, объединения результата с другими запросами. И еще много чего ещё.
11 дек 19, 18:52    [22038033]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли возвращение табличной переменной из процедуры  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
Владислав Колосов
AlexKM2020,

используйте функцию для получения данных, а не процедуру. В результате получите: известный набор возвращаемых атрибутов, возможность фильтра, сортировки, группировки, объединения результата с другими запросами. И еще много чего ещё.
В C#??
11 дек 19, 23:43    [22038220]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить