|
|
|
Вопрос по T-SQL формирование набора данных
|
|||
|---|---|---|---|
|
#18+
Приветсвую! Вопрос такой: существует БД с огромным (относительно) набором данных. Необходимо написать хранимую процедуру, позволяющую извлекать по переданным параметрам информацию из общего набора данных. Причем набор данных на выходе нельзя фопределить однозначно SELECT-ом так как в процессе обработки проводятся вспомогательные вычисления. Так вот суть вопроса: А каков же механизм формирования пользовательского набора данных, представляющего из себе не классический SELECT к БД а именно сформированный самостоятельно НД. Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2002, 12:07:54 |
|
||
|
Вопрос по T-SQL формирование набора данных
|
|||
|---|---|---|---|
|
#18+
Нда... временные таблицы? курсоры?? переменные типа table??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2002, 13:20:35 |
|
||
|
Вопрос по T-SQL формирование набора данных
|
|||
|---|---|---|---|
|
#18+
2 Pupkin: Не понял. приведи пример ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2002, 13:41:33 |
|
||
|
Вопрос по T-SQL формирование набора данных
|
|||
|---|---|---|---|
|
#18+
Это наверное похоже на вот что: хочу установить такой автомат по продаже товаров (типа как пепси-колу продают), но чтобы он продавал все, что покупатель захочет, причем заранее не зная, что нужно. - Хочу рожок мороженого - на тебе мороженое Хочу вертолет - на тебе вертолет Хочу красный импульсный высокоточный гиперсимпулятор - на тебе. Тока как ему сказать "хочу это и это" тоже неизвестно, так как количество входных параметров неопределено. :))))))))))))))))))) Нда.................. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2002, 14:03:17 |
|
||
|
Вопрос по T-SQL формирование набора данных
|
|||
|---|---|---|---|
|
#18+
Поясняю для особо одаренных: Например: есть БД по сделкам совершенным на рынке ценных бумаг Существует задача управления кредитным риском, которая представлет из себя установление ограничений на проводимые операции для каждого контрагента (т .е. того с кем заключаем сделку). Использование значений лимитов- расчетная величина представляющая из себя вектор A размерности N (как правило Т=30). Каждый элемент данного вектора A расчитывается исходя из : 1. Предыдущий операций 2. Типа кредитного риска который возникает для каждой операции и 3. Срока(ов) каждой операции. Примерная постановка задачи (абстрактная): нужно расчитать матрицу[или промежуточный набор данных] R(m,n) где m-кол-во контрагентов n-кол-во дней И вернуть этот промежуточный набор данных Т.е. необходимо реализовать хранимую процедуру которая: 1. На входе получает ID контрагента и период за который необходимо расчитать кредитные риски. 2. На выходе вернет расчитанную матрицу в виде набора данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2002, 14:30:38 |
|
||
|
Вопрос по T-SQL формирование набора данных
|
|||
|---|---|---|---|
|
#18+
А что, так мало известных науке способов задать матрицу? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2002, 14:34:30 |
|
||
|
Вопрос по T-SQL формирование набора данных
|
|||
|---|---|---|---|
|
#18+
Вопрос не только в способе задания матрицы, а в способе возврата пользовательского рекордсета. Солюшен может быть найден путем создания временной таблицы. Но это не хотелось бы делать, так как к этой процедуре может обратиться куча пользователей. Неплохим вариантом была бы переменная табличного типа, и вот здесь возникают сразу траблы. Так как я не очень искушен в T-SQL вот и задаю вопрос р том как эта хреновина реализуется в T-SQL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2002, 15:07:26 |
|
||
|
Вопрос по T-SQL формирование набора данных
|
|||
|---|---|---|---|
|
#18+
а какие проблемы с временной таблицей?... чегойто я не пойму... да хоть сколько народу.... для каждого все равно будет своя таблица.... кстати если скул решит что табличной переменной нуно хранится не в памяти он все равно сольет ее на временную таблицу..... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2002, 15:40:10 |
|
||
|
Вопрос по T-SQL формирование набора данных
|
|||
|---|---|---|---|
|
#18+
Можно привести какой-либо адекватный пример объявления табличной переменной. Или линк дайте ......... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2002, 15:54:58 |
|
||
|
Вопрос по T-SQL формирование набора данных
|
|||
|---|---|---|---|
|
#18+
В BOL ищи table data type ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2002, 15:58:23 |
|
||
|
Вопрос по T-SQL формирование набора данных
|
|||
|---|---|---|---|
|
#18+
Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2002, 16:01:53 |
|
||
|
Вопрос по T-SQL формирование набора данных
|
|||
|---|---|---|---|
|
#18+
можешь попробовать создать функцию see BOL "CREATE FUNCTION" только по моему проблемы будут с тем как обращаться с плученым рекордсетом, так как построить то ты таблицу любой размерности сможешь и вернешь то её красиво, а-ля матрица, а дальше как её интерпретировать то, возможно тебе матрица то и не нужна как таковая :)) а так кстати переменная типа table это всего лишь ссылка на временную талицу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2002, 16:22:15 |
|
||
|
Вопрос по T-SQL формирование набора данных
|
|||
|---|---|---|---|
|
#18+
С переменной типа table разобрался ..... но тут же возник встречный гимор: А как задать переменную типа table с количеством полей равном N? Т .е. чтобы задать матрицу R(M,N) мне нужно знать кол-во столбцов. (Строки могут меняться и так). Короче, говоря языком реляционной алгебры нужно знать количество атрибутов, а количество кортежей задается в процессе расчета ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2002, 16:48:02 |
|
||
|
Вопрос по T-SQL формирование набора данных
|
|||
|---|---|---|---|
|
#18+
через динамический запрос.... см. EXEC ('script text') ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2002, 16:58:42 |
|
||
|
Вопрос по T-SQL формирование набора данных
|
|||
|---|---|---|---|
|
#18+
Т.е. если я правильно понял, я скриптом должен создать еще один скрипт (исходя из значения N для нашей матрицы) и заэкзекьютить его EXEC-ом....... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2002, 17:15:43 |
|
||
|
Вопрос по T-SQL формирование набора данных
|
|||
|---|---|---|---|
|
#18+
абсолютно верно.... ;)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2002, 17:21:01 |
|
||
|
Вопрос по T-SQL формирование набора данных
|
|||
|---|---|---|---|
|
#18+
для таких целей в принципе лучше писать расширенные процедуры..... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2002, 17:22:17 |
|
||
|
Вопрос по T-SQL формирование набора данных
|
|||
|---|---|---|---|
|
#18+
Правда в этом случае нельзя делать ни табличные переменные, ни локальные временные таблицы, поскольку они будут видны только внутри EXEC. Правда может получиться вернуть табличную переменную из sp_executesql. Или через глобальную временную таблицу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2002, 17:23:26 |
|
||
|
Вопрос по T-SQL формирование набора данных
|
|||
|---|---|---|---|
|
#18+
лучше весь текст впихнуть в одну строку.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2002, 17:35:49 |
|
||
|
Вопрос по T-SQL формирование набора данных
|
|||
|---|---|---|---|
|
#18+
2 Pupkin Сведи все в одну таблицу: id, m-кол-во контрагентов, n-кол-во дней ... я так понимаю ты это можешь сделать без проблем, потом формируешь из нее pivot таблицу : http://www.sqlteam.com/item.asp?ItemID=2955 - в качесте ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2002, 17:40:36 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32041574&tid=1821312]: |
0ms |
get settings: |
9ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
42ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
| others: | 207ms |
| total: | 336ms |

| 0 / 0 |
