Текущий архив: 2003.12.12;
Скачать: CL | DM;
Вниз
Динамические колонки в хранимых процедурах на IB7.1 Найти похожие ветки
← →
Mic_2000 (2003-11-18 00:39) [0]Привет!
Подскажите можно ли так сделать:
Есть таблица с колонками: M1,M2,M3,M4,M5,M6,M7,M8,M9,M10
Нужно что бы в хранимой процедуре в зависимости от передаваемого
параметра (от 1 до 10) выдавылась количество колонок равное параметру,
т.е. если в параметре стоит 4, то запрос был примерно таким:
SELECT M1,M2,M3,M4
FROM TABLE1
Заранее спасибо за ответ
← →
Rad © (2003-11-18 06:32) [1]Каскадом
IF (PARAM = 4)
разве что.
← →
Digitman © (2003-11-18 09:04) [2]
> выдавылась количество колонок
кому выдавалось ? тому кто вызвал SP ? или - кому ?
← →
alex_*** (2003-11-18 09:24) [3]Не проще модифицировать сам запрос внутри клиента?
← →
Vetal © (2003-11-18 15:52) [4]Делаешь в хранимой процедуре цикл While с числом циклов, равным твоему параметру, формируеш динамический запрос в текстовой переменной, а затем выполняеш этот динамический запрос.
← →
Silver Alex © (2003-11-18 16:00) [5]а разве можно сделать чтобы хранимая процедура возвращала неизвестно сколько колонок?По моему нет.По крайней мере я это не поборол, но если кто-то знает ответ было бы интересно услышать.Потому что вышесказанное я так понимаю все теория
← →
Vetal © (2003-11-18 16:53) [6]2Silver Alex: Конечно можно:
MyProc.ExecProc();
for i := 0 to MyProc.Fields.Count - 1 do
DoSomething(MyProc.Fields[i].Value);
Я сам как раз сейчас этим занимаюсь.
← →
Silver Alex © (2003-11-18 17:04) [7]
> 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 18:53) [8]Я думаю это сделать можно. Покопайся в системных таблицах и системных хранимых процедурах, через них по идее можно получить информацию о хранимых процедурах с описанием всех параметров.
← →
Johnmen © (2003-11-18 23:07) [9]>Vetal ©
Динамическое изменение количества возвращаемых ХП параметров ?
Это новая, еще не открытая никем страница в функциональности IB !
А может быть это недокументированная фича ?
:)))
← →
stud © (2003-11-19 09:40) [10]а вообще это наверное идея, переписывать процедуры во время выполнения.....
← →
Zacho © (2003-11-19 09:50) [11]
> stud © (19.11.03 09:40) [10]
Плохая идея, уж поверь.
← →
stud © (2003-11-19 09:51) [12]мы комсомольцы легкого пути не ищем))))
← →
Danilka © (2003-11-19 10:00) [13]только вот, нафига все это нужно???
обычное дело, формировать запрос на клиенте, с любым кол-вом возвращаемых колонок, хоть десять, хоть двадцать и даже 13 можно.
← →
Малиновский Владимир (2003-11-19 13:01) [14]Нельзя
← →
Vetal © (2003-11-19 16:59) [15]Человек спрашивал:
> Silver Alex © (18.11.03 16:00) [5]
> а разве можно сделать чтобы хранимая процедура возвращала
> неизвестно сколько колонок?
Возвращать то она может неизвестно скоко колонок. Их легко посмотреть на клиенте. А вот на сервере, если неизвестно, сколько процедура возвращает колонок, возможно это можна было бы посмотреть используя системные таблицы. Но мне все таки кажется, что этого нельзя. На самом ЭсКуЭл сервере я этого не делал.
> Johnmen © (18.11.03 23:07) [9]
>
> Динамическое изменение количества возвращаемых ХП параметров
> ?
не количество возвращаемых параметров, а количество возвращаемых колонок. Ты не путай! И никаких процедур не нужно при этом переписывать во время выполнения.
Вобще я у себя ща пишу прогу с использованием МС ЭсКуэЛ Сервера. Есть в ней такая штука. ХП внутри себя строит динамический запрос, возвращает набор на клиента, он определяет количество и типы колонок, и соотв образом их обрабатывает.
← →
Johnmen © (2003-11-19 17:20) [16]>Vetal © (19.11.03 16:59) [15]
>не количество возвращаемых параметров, а количество возвращаемых колонок. Ты не путай!
По-моему, путаешь ты. А еще путаешь IB с MSSQL.
← →
stud © (2003-11-19 17:23) [17]нет, а в чем проблема на клиенте указать количество возвращаемых колонок? зачем этим должен заниматься сервер? к тому MS SQL и Interbase немного разные звери))
← →
Малиновский Владимир (2003-11-19 17:26) [18]Ну нельзя!
← →
stud © (2003-11-19 17:28) [19]
> Малиновский Владимир (19.11.03 17:26) [18]
чего нельзя?
← →
Малиновский Владимир (2003-11-19 17:30) [20]Ничего нельзя!
← →
stud © (2003-11-19 17:33) [21]это правильно)))
← →
Silver Alex © (2003-11-19 18:17) [22]
> Человек спрашивал:
>
> > Silver Alex © (18.11.03 16:00) [5]
> > а разве можно сделать чтобы хранимая процедура возвращала
>
> > неизвестно сколько колонок?
>
>
> Возвращать то она может неизвестно скоко колонок. Их легко
> посмотреть на клиенте. А вот на сервере, если неизвестно ...
> я этого не делал.
это был риторический вопрос, ты сам бы попробовал
← →
Dmitry Glukhov (2003-11-21 12:54) [23]А что находится в этих колонках, если это одни и те же данные, отличающиеся доп.свойствами (например, суммы затрат по разным подразделениям)? Тогда проще хранить в 3й нормальной форме и делать выборку по этому свойству (отдельный столбец) а на клиенте строить сводную таблицу в Excel"е или разворачивать данные другими средствами
Страницы: 1 вся ветка
Текущий архив: 2003.12.12;
Скачать: CL | DM;
Память: 0.52 MB
Время: 0.024 c