Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Динамические колонки в хранимых процедурах на IB7.1 [D6, IB6.x]


Страницы:   1 2

Mic_2000 ©   (2003-11-18 00:39:00) 

Привет!

Подскажите можно ли так сделать:

Есть таблица с колонками: M1,M2,M3,M4,M5,M6,M7,M8,M9,M10
Нужно что бы в хранимой процедуре в зависимости от передаваемого
параметра (от 1 до 10) выдавылась количество колонок равное параметру,
т.е. если в параметре стоит 4, то запрос был примерно таким:

SELECT M1,M2,M3,M4
FROM TABLE1

Заранее спасибо за ответ


Dmitry Glukhov   (2003-11-21 12:54:00) [1]

А что находится в этих колонках, если это одни и те же данные, отличающиеся доп.свойствами (например, суммы затрат по разным подразделениям)? Тогда проще хранить в 3й нормальной форме и делать выборку по этому свойству (отдельный столбец) а на клиенте строить сводную таблицу в Excel"е или разворачивать данные другими средствами


Silver Alex   (2003-11-19 18:17:00) [2]


> Человек спрашивал:
>
> > Silver Alex © (18.11.03 16:00) [5]
> > а разве можно сделать чтобы хранимая процедура возвращала
>
> > неизвестно сколько колонок?
>
>
> Возвращать то она может неизвестно скоко колонок. Их легко
> посмотреть на клиенте. А вот на сервере, если неизвестно ...
> я этого не делал.

это был риторический вопрос, ты сам бы попробовал


stud   (2003-11-19 17:33:00) [3]

это правильно)))


Малиновский Владимир   (2003-11-19 17:30:00) [4]

Ничего нельзя!


stud   (2003-11-19 17:28:00) [5]


> Малиновский Владимир (19.11.03 17:26) [18]

чего нельзя?


Малиновский Владимир   (2003-11-19 17:26:00) [6]

Ну нельзя!


stud   (2003-11-19 17:23:00) [7]

нет, а в чем проблема на клиенте указать количество возвращаемых колонок? зачем этим должен заниматься сервер? к тому MS SQL и Interbase немного разные звери))


Johnmen   (2003-11-19 17:20:00) [8]

>Vetal © (19.11.03 16:59) [15]
>не количество возвращаемых параметров, а количество возвращаемых колонок. Ты не путай!

По-моему, путаешь ты. А еще путаешь IB с MSSQL.


Vetal   (2003-11-19 16:59:00) [9]

Человек спрашивал:

> Silver Alex © (18.11.03 16:00) [5]
> а разве можно сделать чтобы хранимая процедура возвращала
> неизвестно сколько колонок?


Возвращать то она может неизвестно скоко колонок. Их легко посмотреть на клиенте. А вот на сервере, если неизвестно, сколько процедура возвращает колонок, возможно это можна было бы посмотреть используя системные таблицы. Но мне все таки кажется, что этого нельзя. На самом ЭсКуЭл сервере я этого не делал.


> Johnmen © (18.11.03 23:07) [9]
>
> Динамическое изменение количества возвращаемых ХП параметров
> ?


не количество возвращаемых параметров, а количество возвращаемых колонок. Ты не путай! И никаких процедур не нужно при этом переписывать во время выполнения.

Вобще я у себя ща пишу прогу с использованием МС ЭсКуэЛ Сервера. Есть в ней такая штука. ХП внутри себя строит динамический запрос, возвращает набор на клиента, он определяет количество и типы колонок, и соотв образом их обрабатывает.


Малиновский Владимир   (2003-11-19 13:01:00) [10]

Нельзя


Danilka   (2003-11-19 10:00:00) [11]

только вот, нафига все это нужно???
обычное дело, формировать запрос на клиенте, с любым кол-вом возвращаемых колонок, хоть десять, хоть двадцать и даже 13 можно.


stud   (2003-11-19 09:51:00) [12]

мы комсомольцы легкого пути не ищем))))


Zacho   (2003-11-19 09:50:00) [13]


> stud © (19.11.03 09:40) [10]

Плохая идея, уж поверь.


stud   (2003-11-19 09:40:00) [14]

а вообще это наверное идея, переписывать процедуры во время выполнения.....


Johnmen   (2003-11-18 23:07:00) [15]

>Vetal ©

Динамическое изменение количества возвращаемых ХП параметров ?
Это новая, еще не открытая никем страница в функциональности IB !
А может быть это недокументированная фича ?
:)))


Vetal   (2003-11-18 18:53:00) [16]

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


Silver Alex   (2003-11-18 17:04:00) [17]


> Vetal © (18.11.03 16:53) [6]
> 2Silver Alex: Конечно можно:
>
> MyProc.ExecProc();
> for i := 0 to MyProc.Fields.Count - 1 do
> DoSomething(MyProc.Fields[i].Value);
>
> Я сам как раз сейчас этим занимаюсь.


это в Delphi ?имеется ввиду на SQL сервере, в Delphi я сам что хочешь напишу :))


Vetal   (2003-11-18 16:53:00) [18]

2Silver Alex: Конечно можно:

MyProc.ExecProc();
for i := 0 to MyProc.Fields.Count - 1 do
DoSomething(MyProc.Fields[i].Value);

Я сам как раз сейчас этим занимаюсь.


Silver Alex   (2003-11-18 16:00:00) [19]

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


Vetal   (2003-11-18 15:52:00) [20]

Делаешь в хранимой процедуре цикл While с числом циклов, равным твоему параметру, формируеш динамический запрос в текстовой переменной, а затем выполняеш этот динамический запрос.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо