Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / как получить список выводимых полей хранимой процедуры / 25 сообщений из 44, страница 1 из 2
19.02.2015, 09:36
    #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
19.02.2015, 09:38
    #38883571
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как получить список выводимых полей хранимой процедуры
PG81как получить список выводимых полей хранимой процедуры
Получить где - на клиенте или на сервере ?
...
Рейтинг: 0 / 0
19.02.2015, 09:40
    #38883573
PG81
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как получить список выводимых полей хранимой процедуры
сорри нужен sql запрос к системным таблицам
...
Рейтинг: 0 / 0
19.02.2015, 09:44
    #38883574
хмхмхм
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как получить список выводимых полей хранимой процедуры
PG81,

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

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

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

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

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

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

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

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

PG81у меня как раз вопрос как получить эту информацию запросом SQL?
Для объектов, которые могут возаращать только один набор по своей приводе, информация о столбцах хранится в sys.columns
...
Рейтинг: 0 / 0
19.02.2015, 10:43
    #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
19.02.2015, 10:46
    #38883651
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как получить список выводимых полей хранимой процедуры
PG81Этот запрос возвращает список параметров процедуры
Вы ответы читаете вообще ?
...
Рейтинг: 0 / 0
19.02.2015, 10:48
    #38883654
хмхмхм
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как получить список выводимых полей хранимой процедуры
iap,

сорри, с утра видимо не проснулся. Показалось, что автор спрашивал именно про параметры.
...
Рейтинг: 0 / 0
19.02.2015, 10:55
    #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
19.02.2015, 10:55
    #38883662
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как получить список выводимых полей хранимой процедуры
PG81,

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

Можно попробовать поковыряться в тексте процедуры, возвращаемым запросом:
Код: sql
1.
EXEC sp_helptext 'schema.proc';
...
Рейтинг: 0 / 0
19.02.2015, 10:57
    #38883665
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как получить список выводимых полей хранимой процедуры
PG81Отсюда вопросы
1.Что значит объекты, которые могут возвращать только один набор по своей природе?как-то по особенному делать хп или что?
Это те объекты, в которых физически невозможно написать возврат нескольких наборов.
Потому что это будет нарушением синтаксиса.
...
Рейтинг: 0 / 0
19.02.2015, 10:57
    #38883666
Maxx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как получить список выводимых полей хранимой процедуры
а помоему ТС пошел по пути потыки написать очередной "совершенно независимый код" со все5ми вытекающими....
...
Рейтинг: 0 / 0
19.02.2015, 12:45
    #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
19.02.2015, 12:57
    #38883864
LSV
LSV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как получить список выводимых полей хранимой процедуры
Maxxа помоему ТС пошел по пути потыки написать очередной "совершенно независимый код" со все5ми вытекающими....как вариант - выполнить процедуру, получить датасет, зачитать поля и их типы. Будет независимо.
Можно даже узнать сколько датасетов у ХП.
...
Рейтинг: 0 / 0
19.02.2015, 13:04
    #38883877
Maxx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как получить список выводимых полей хранимой процедуры
LSVкак вариант - выполнить процедуру, получить датасет, зачитать поля и их типы. Будет независимо.
Можно даже узнать сколько датасетов у ХП.
я откровенно не разделяю ваш "оптимизм" по поводу таких систем...
Зачем ето пытаються делать - язнаю, НО пратическое применение такого - в моем понимаю ето производная между граблефабрикой и условно поддерживаемым кодом. Не стоит пытать рожать "ООП" на скл, не его ето стихия. Опять же -все ето мое скромное имхо
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / как получить список выводимых полей хранимой процедуры / 25 сообщений из 44, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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