powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / как получить список выводимых полей хранимой процедуры
25 сообщений из 44, страница 1 из 2
как получить список выводимых полей хранимой процедуры
    #38883569
PG81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть например процедура
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
create proc dbo.ClientList@ID int as
begin
  select 
    C.ID
    C.Name
    C.Phone
    C.Email
  from Client C
end


как получить список выводимых полей хранимой процедуры
...
Рейтинг: 0 / 0
как получить список выводимых полей хранимой процедуры
    #38883571
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PG81как получить список выводимых полей хранимой процедуры
Получить где - на клиенте или на сервере ?
...
Рейтинг: 0 / 0
как получить список выводимых полей хранимой процедуры
    #38883573
PG81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сорри нужен sql запрос к системным таблицам
...
Рейтинг: 0 / 0
как получить список выводимых полей хранимой процедуры
    #38883574
хмхмхм
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PG81,

select * from sys.parameters as p
where p.object_id = object_id('schema.proc')
...
Рейтинг: 0 / 0
как получить список выводимых полей хранимой процедуры
    #38883579
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хмхмхмPG81,

select * from sys.parameters as p
where p.object_id = object_id('schema.proc')При чём здесь параметры?
А если процедура возвращает несколько датасетов?
...
Рейтинг: 0 / 0
как получить список выводимых полей хранимой процедуры
    #38883582
PG81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iap,

об этом я не подумал, но по идее предполагается, что процедура возвращает только один датасет
...
Рейтинг: 0 / 0
как получить список выводимых полей хранимой процедуры
    #38883583
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PG81но по идее предполагается, что процедура возвращает только один датасет
Т.е. сервер должен запрещать создание процедур, которые возвращают множество наборов ?
...
Рейтинг: 0 / 0
как получить список выводимых полей хранимой процедуры
    #38883585
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PG81iap,

об этом я не подумал, но по идее предполагается, что процедура возвращает только один датасетНо параметры-то по-любому здесь не при чём.
Надо же узнать поля датасетов.
На клиенте, кстати, это всё можно сделать. В компонентах ADO, например.
...
Рейтинг: 0 / 0
как получить список выводимых полей хранимой процедуры
    #38883596
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PG81как получить список выводимых полей хранимой процедурыЗачем?
Чтобы динамически построить таблицу и положить в нее результата выполнения процедуры?
...
Рейтинг: 0 / 0
как получить список выводимых полей хранимой процедуры
    #38883616
PG81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
invm,

да именно так. Но там все несколько сложнее.
В БД есть описание форм, датасетов, полей и как все это взаимодействует между собой. По этому описанию динамически создаются формы и все их содержимое. При создании пользователем описания полей, чтобы самому поштучно не добавлять поля, реализована процедура которая открывает датасет, смотрит какие там поля и создает их описания в БД. Потом уже пользователь может вводить дополнительные свойства этих полей.

Я решил переделать этот механизм и найти возможность добавления описания полей процедурой в БД без открывания датасета, если это возможно конечно.
...
Рейтинг: 0 / 0
как получить список выводимых полей хранимой процедуры
    #38883618
PG81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Glory,

наверное нет необходимости запрещать несколько датасетов
у меня среди сотен процедур в БД нет ни одной где бы использовалась такая возможность.
Но если вдруг такая появится, то может просто список полей первого датасета
...
Рейтинг: 0 / 0
как получить список выводимых полей хранимой процедуры
    #38883621
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PG81наверное нет необходимости запрещать несколько датасетов
у меня среди сотен процедур в БД нет ни одной где бы использовалась такая возможность.
Тогда почему вы не создаете объекты, которые по своей изначальной природе всегда возвращают один, заранее определенный набор ? Что и позволяет иметь информацию об этом наборе в системных таблицах
...
Рейтинг: 0 / 0
как получить список выводимых полей хранимой процедуры
    #38883626
PG81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Glory,

так вот именно такие хранимки и делаю
авторЧто и позволяет иметь информацию об этом наборе в системных таблицах
у меня как раз вопрос как получить эту информацию запросом SQL?
...
Рейтинг: 0 / 0
как получить список выводимых полей хранимой процедуры
    #38883630
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PG81так вот именно такие хранимки и делаю
Еще раз
Хранимая процедура может возвращать много наборов. И ваше личное обязательство не возращать больше одного набора ничего не меняет.

PG81у меня как раз вопрос как получить эту информацию запросом SQL?
Для объектов, которые могут возаращать только один набор по своей приводе, информация о столбцах хранится в sys.columns
...
Рейтинг: 0 / 0
как получить список выводимых полей хранимой процедуры
    #38883646
PG81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Glory,

Код: sql
1.
2.
3.
select c.name, c.length from syscolumns c
join sysobjects o on o.id = c.id
where o.name = 'ProcName'


Этот запрос возвращает список параметров процедуры
...
Рейтинг: 0 / 0
как получить список выводимых полей хранимой процедуры
    #38883651
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PG81Этот запрос возвращает список параметров процедуры
Вы ответы читаете вообще ?
...
Рейтинг: 0 / 0
как получить список выводимых полей хранимой процедуры
    #38883654
хмхмхм
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
iap,

сорри, с утра видимо не проснулся. Показалось, что автор спрашивал именно про параметры.
...
Рейтинг: 0 / 0
как получить список выводимых полей хранимой процедуры
    #38883661
PG81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Glory,
авторДля объектов, которые могут возвращать только один набор по своей приводе, информация о столбцах хранится в sys.columns

попробовал такой запрос
Код: sql
1.
2.
3.
select * from sys.columns c
join sysobjects o on o.id = c.object_id
where o.name = 'ProcLst'


Выдает пусто. Видимо что-то делаю не так.
Отсюда вопросы
1.Что значит объекты, которые могут возвращать только один набор по своей природе?как-то по особенному делать хп или что?
2.Что я делаю не так или где я не внимательно прочитал что-то прочитал ответы?
...
Рейтинг: 0 / 0
как получить список выводимых полей хранимой процедуры
    #38883662
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PG81,

Для 2012 и выше - sp_describe_first_result_set
...
Рейтинг: 0 / 0
как получить список выводимых полей хранимой процедуры
    #38883663
хмхмхм
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PG81,

Можно попробовать поковыряться в тексте процедуры, возвращаемым запросом:
Код: sql
1.
EXEC sp_helptext 'schema.proc';
...
Рейтинг: 0 / 0
как получить список выводимых полей хранимой процедуры
    #38883665
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PG81Отсюда вопросы
1.Что значит объекты, которые могут возвращать только один набор по своей природе?как-то по особенному делать хп или что?
Это те объекты, в которых физически невозможно написать возврат нескольких наборов.
Потому что это будет нарушением синтаксиса.
...
Рейтинг: 0 / 0
как получить список выводимых полей хранимой процедуры
    #38883666
Фотография Maxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а помоему ТС пошел по пути потыки написать очередной "совершенно независимый код" со все5ми вытекающими....
...
Рейтинг: 0 / 0
как получить список выводимых полей хранимой процедуры
    #38883836
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PG81,
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
CREATE procedure AAA(@n nvarchar(123)) as
select 1 as one,'333' as two;
select 'dddd' as one, @n two;

SET FMTONLY ON;

exec AAA 'www'

SET FMTONLY OFF;
...
Рейтинг: 0 / 0
как получить список выводимых полей хранимой процедуры
    #38883864
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maxxа помоему ТС пошел по пути потыки написать очередной "совершенно независимый код" со все5ми вытекающими....как вариант - выполнить процедуру, получить датасет, зачитать поля и их типы. Будет независимо.
Можно даже узнать сколько датасетов у ХП.
...
Рейтинг: 0 / 0
как получить список выводимых полей хранимой процедуры
    #38883877
Фотография Maxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LSVкак вариант - выполнить процедуру, получить датасет, зачитать поля и их типы. Будет независимо.
Можно даже узнать сколько датасетов у ХП.
я откровенно не разделяю ваш "оптимизм" по поводу таких систем...
Зачем ето пытаються делать - язнаю, НО пратическое применение такого - в моем понимаю ето производная между граблефабрикой и условно поддерживаемым кодом. Не стоит пытать рожать "ООП" на скл, не его ето стихия. Опять же -все ето мое скромное имхо
...
Рейтинг: 0 / 0
25 сообщений из 44, страница 1 из 2
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / как получить список выводимых полей хранимой процедуры
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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