Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Выборка из таблицы данных, которые возвращает процедура
|
|||
|---|---|---|---|
|
#18+
Sybase ASE 12.5.3 Собственно вопрос... Есть процедура, которая выдает данные... Можно ли каким-нибудь образом в Sybase сделать запрос вида: select * from (exec ПРОЦЕДУРА) as test Т.е. хотелось бы, чтобы была возможность обработки данных из значений, возвращаемых процедурой... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2007, 18:23 |
|
||
|
Выборка из таблицы данных, которые возвращает процедура
|
|||
|---|---|---|---|
|
#18+
http://www.sql.ru/faq/faq_topic.aspx?fid=438 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2007, 18:43 |
|
||
|
Выборка из таблицы данных, которые возвращает процедура
|
|||
|---|---|---|---|
|
#18+
Можно попробовать обойти ограничение используя временную таблицу. Создать процедуру : create table #t -- обязательно в той же сессии иначе процедура не скомпилится go create procedure dbo. test_proc @param1 ... @param x as select .... from.... into #t go Далее использовать результаты процедуры в запросах: create table #t go exec dbo.test_proc -- процедура наполнит таблицу данными далее можно если нужно создать индекс на #t, ну и собственно select * from #t При таком подходе Вы можете даже наполнить временную таблицу какими-то данными до вызова процедуры и потом в процедуре их проанализировать и в зависимости от логики изменить или добавить новые записи. Есть всё правильно сделать работать будет быстро. По поводу варианта с прокси таблицами Вы можете посмотреть этот топик: /topic/477708&hl= KruДобрый день, можно всё-таки попробовать сделать через прокси таблицу. У меня дома ASE 15 стоит и эксперемент до конца не удался из-за лицензионной ругани. На 12.5 может быть и получится. Я попробовал на следующей задачке: Есть таблица test1 с 2мя столбцами и есть таблица test2 с 3мя стобцами. Все int. Требуется сделать insert в test2 из test1 так чтобы в test2.a добавлялись значения из test1.a, в test2.b значения из test1.b и в test2.c некоторая функция вставляла бы произведение стобцов a и b из test1. Прошу прощения, если пишу криво -- устал после работы Создаём временные таблицы: use pubs2 go create table dbo.test1 (a int, b int) go insert into dbo.test1 values (1,1) insert into dbo.test1 values (1,2) insert into dbo.test1 values (1,3) insert into dbo.test1 values (2,2) insert into dbo.test1 values (2,3) go create table dbo.test2 (a int, b int, c int) go создаём процедуру умножения create procedure dbo.mathtutor1 @mult1 int , @mult2 int as select @mult1 * @mult2 as res go Теперь по поводу loopbsck сервера. В ASE15 при установке создаётся loopback c именем loopback. В 12.5 такого сервера, насколько я помню, нет. Его нужно создать: sp_addserver \'loopback\', null, \'your_local_server_name\' Дальше создаётся прокси таблица "смотрящая" на процедуру. Я переконектился к северу на всякий случай, хотя может быть необязательно. create existing table dbo.func_subst_mathtutor (res int , _mult1 integer null -- Важно, поле должно позволять Null ,_mult2 integer null) external procedure at \'loopback.pubs2.dbo.mathtutor1\' На моей 15шке команда прошла. Надеюсь, что на 12.5 тоже пройдёт, хотя RPC штука хитрая, может быть какую-нибудь лицензию попросит. Если получится, то последняя команда: insert into test2 select a,b,res from test1 t inner join func_subst_mathtutor1 m on t.a = m._mult1 and t.b = m._mult2 (Это эквивалент insert into test2 select a,b, function(a,b) from test1) Здесь у меня, к сожалению, выскочила ошибка 5629 - судя по описанию, это какие-то лицензионные дела. Может быть в 12.5 пройдйт нормально. Попробуйте. Если получится, напишите. Напоследок. У меня был случай когда только таким неудобным образом удалось решить задачу. Я тогда на 12.5 работал и помню, что какие-то проблемы с RPC возникали, но администратор что-то подкрутил и всё заработало. Производительность была плохая, но там случай был сложный и вопрос стоял либо так либо никак. Удачи ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2007, 19:26 |
|
||
|
|

start [/forum/topic.php?fid=55&msg=35024491&tid=2011754]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
80ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
| others: | 245ms |
| total: | 405ms |

| 0 / 0 |
