|
|
|
Возвращение наборОВ данных из хр.процедур
|
|||
|---|---|---|---|
|
#18+
Хр.процедура должна возвратить несколько наборов данных. Пока один возвращается через select * from #temp в процедуре и вызовом её через insert into result1 exec proc А всё остальное через глобальные временные таблицы. Хотелось бы отказаться от них. Можно ли как-то иначе извернуться? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2002, 14:35:19 |
|
||
|
Возвращение наборОВ данных из хр.процедур
|
|||
|---|---|---|---|
|
#18+
Иными словами, можно ли на T-SQL'е обработать результаты хр.процедуры, возвращающей несколько таблиц? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2002, 14:43:07 |
|
||
|
Возвращение наборОВ данных из хр.процедур
|
|||
|---|---|---|---|
|
#18+
Ну например расширяя тот пример, который только что предоставили мен в соседнем топике: USE pubs GO /* Create a procedure with a cursor output parameter. */ CREATE PROCEDURE OpenCrsr2 @OutCrsr CURSOR VARYING OUTPUT, @OutCrsr2 CURSOR VARYING OUTPUT AS SET @OutCrsr = CURSOR FOR SELECT au_lname FROM authors WHERE au_lname LIKE 'S%' OPEN @OutCrsr SET @OutCrsr2 = CURSOR FOR SELECT au_lname FROM authors WHERE au_lname LIKE 'S%' OPEN @OutCrsr2 GO /* Allocate a cursor variable. */ DECLARE @CrsrVar CURSOR DECLARE @CrsrVar2 CURSOR /* Execute the procedure created earlier to fill the variable. */ EXEC OpenCrsr2 @OutCrsr = @CrsrVar OUTPUT, @OutCrsr2 = @CrsrVar2 OUTPUT /* Use the variable to fetch the rows from the cursor. */ FETCH NEXT FROM @CrsrVar WHILE (@@FETCH_STATUS <> -1) BEGIN FETCH NEXT FROM @CrsrVar END /* Use the variable to fetch the rows from the cursor. */ FETCH NEXT FROM @CrsrVar2 WHILE (@@FETCH_STATUS <> -1) BEGIN FETCH NEXT FROM @CrsrVar2 END CLOSE @CrsrVar CLOSE @CrsrVar2 DEALLOCATE @CrsrVar DEALLOCATE @CrsrVar2 GO Так пойдет ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2002, 14:48:00 |
|
||
|
Возвращение наборОВ данных из хр.процедур
|
|||
|---|---|---|---|
|
#18+
Неа, непойдёт. В твоём примере делаются курсоры на существующие таблицы, а у меня таких таблиц нет - хр.процедура собирает и обрабатывает данные и должна их вернуть, а не ссылки на исходные данные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2002, 15:11:02 |
|
||
|
Возвращение наборОВ данных из хр.процедур
|
|||
|---|---|---|---|
|
#18+
если на клиенте то это просто... пример из BOL Set rs = Cmd.Execute While Not rs Is Nothing If (Not rs.EOF) Then Debug.Print rs(0) End If Set rs = rs.NextRecordset Wend поищи по multiple recordset если на сервере то : либо объединяй результаты... либо пиши в постоянные временные таблицы... а еще лучше разбить на несколько процедур.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2002, 16:43:57 |
|
||
|
|

start [/forum/topic.php?fid=46&gotonew=1&tid=1818811]: |
0ms |
get settings: |
5ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
44ms |
get topic data: |
6ms |
get first new msg: |
3ms |
get forum data: |
2ms |
get page messages: |
27ms |
get tp. blocked users: |
1ms |
| others: | 192ms |
| total: | 293ms |

| 0 / 0 |
