|
выгрузка данных процедуры в таблицу
|
|||
---|---|---|---|
#18+
Добрый день, друзья! Скажите, плиз, а есть ли в Sybase возможность выгружать результат исполнения процедуры (имею ввиду в случае если это табличный набор данных) в таблицу. Что-то типа того что есть в MS SQL create table #tbl (col1 int, col2 int) insert into #tbl exec somestoreproc @param1 *подразумевается что хранимая проца возвращает датасет из двух столбцов типа int ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2010, 14:39 |
|
выгрузка данных процедуры в таблицу
|
|||
---|---|---|---|
#18+
какая БД? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2010, 23:28 |
|
выгрузка данных процедуры в таблицу
|
|||
---|---|---|---|
#18+
в asa есть, в ase напрямую нет, но обходными путями можно , см. FAQ форума. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2010, 23:57 |
|
выгрузка данных процедуры в таблицу
|
|||
---|---|---|---|
#18+
спасибо за отклик. прочитал FAQ. если позволите, вопросы на понимае. Что пишут в статье по поводу того, как обойти: "Рассмотреть возможность использования VIEW. Это подходит только в случаях достаточно несложных запросов - JOIN-ов может быть сколько угодно, главное чтобы не было сложных операций типа множественных вложенных подзапросов или реляционного вычитания. Рассмотреть возможность использовать временную, псевдовременную или постоянную таблицу для промежуточного хранения данных. Кстати, в этом варианте процедура может формировать несколько наборов данных в разных таблицах. При этом код исходной процедуры помещается в ещё одну процедуру -- процедуру-реализацию, которая складывает данные в выходную таблицу, а остальные процедуры либо выдают эти данные клиенту, либо используют их как-то еще." по первому абзацу я так понял, что должно быть что-то вроде этого: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
по второму абзацу тоже не понял :( вот как мне видится идея: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
но опять же вопрос с которого начали - как поместить результат вызова процедуры в таблицу (по идее эта конструкция должна идти в том месте, которое отмечено "???????????????" во фрагментике). подскажите, пожалуйста, где я не догоняю. Заранее спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2010, 15:13 |
|
выгрузка данных процедуры в таблицу
|
|||
---|---|---|---|
#18+
myspace2000 wrote: > по первому абзацу я так понял, что должно быть что-то вроде этого: Не, понял ты неправильно. .... > подскажите, плиз, как это должно выглядеть, т.к. именно этот исходник не > работает. как-то можно создать вьюху на результат процедуры? Нет, во VIEW результат процедуры запихать нельзя. Т.е. можно, но очень сложно и не нужно этого делать. А тут имелось в виду не это, а то, что ты просто пишешь VIEW и его используешь ВМЕСТО процедуры. Второй вариант -- использовать промежуточную таблицу для храненния результатов процедуры. Типа как: create table #tmpdata ( .... ) go create proc dbo.formdata as begin insert into #tmpdata ( .... ) select ... from ... end go create proc dbo.getdata as begin create table #tmpdata ( .... ) exec formdata .... select ... from #tmpdata join ... end go Надеюсь, теперь понятно. Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2010, 17:48 |
|
выгрузка данных процедуры в таблицу
|
|||
---|---|---|---|
#18+
да, спасибо в моем случае проблема как раз в том, что нельзя править процедуры, которые генерят датасеты и возвращают их клиенту. вопрос возник потому, что требуется писать запросы на возвращаемые процедурой результаты без модификации самих процедур. да жаль что в Sybase такое ограничение. придется создавать копии процедур: основная версия возвращает результат клиенту, другая в таблицу ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2010, 21:23 |
|
|
start [/forum/topic.php?fid=55&fpage=27&tid=2010623]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
43ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
64ms |
get tp. blocked users: |
2ms |
others: | 299ms |
total: | 458ms |
0 / 0 |