|
|
|
Как сделать курсор для update???
|
|||
|---|---|---|---|
|
#18+
Решил заюзать курсор все хорошо отлично если мне нужно читать но теперь мне нужно не просто читать а и по ходу update-тить курсор, создаю курсор такого типа и пишет ошибку что этот курсор Read only, в чем дело??? DECLARE SystemPrice_cursor CURSOR FOR SELECT * FROM SystemPrice where sp_id=@rp_id order by sp_id,sp_perid for Update of sp_delta ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2002, 13:02:32 |
|
||
|
Как сделать курсор для update???
|
|||
|---|---|---|---|
|
#18+
У меня была похожая проблема,решал следующим образом: SELECT * FROM into #temp SystemPrice where sp_id=@rp_id order by sp_id,sp_perid потом курсор по #temp,и update проходит нормально. Решение конечно не из лутших ,но работает:)) Может кто-то из более опытных подскажет как настроить cursor для update правильно,но я сколько не пробыывал у меня постоянно ругаеться MDTS:( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2002, 13:14:13 |
|
||
|
Как сделать курсор для update???
|
|||
|---|---|---|---|
|
#18+
в BOL Поиск : слово cursor раздел: DECLARE CURSOR ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2002, 13:19:33 |
|
||
|
Как сделать курсор для update???
|
|||
|---|---|---|---|
|
#18+
только предупреждаю : Такие шутки приводят к зависанию SQL сервера .... даже если запрос написан нормально .... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2002, 13:22:01 |
|
||
|
Как сделать курсор для update???
|
|||
|---|---|---|---|
|
#18+
Может скомпилишь чего там не так ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2002, 13:24:25 |
|
||
|
Как сделать курсор для update???
|
|||
|---|---|---|---|
|
#18+
Вот так у меня работает : Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. PS Вообще так работать недолжно ... :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2002, 13:38:59 |
|
||
|
Как сделать курсор для update???
|
|||
|---|---|---|---|
|
#18+
Ясный перец что так должно работать( я тоже так думал сделать) но это двойная работа, похорошему поидее можна апдейтить через курсор, а не через отдельный запрос, если я все правильно понял из help. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2002, 14:41:03 |
|
||
|
Как сделать курсор для update???
|
|||
|---|---|---|---|
|
#18+
И я боюсь не то что оно там будет дольше работать, а больше боюсь не возникнут ли deadlock-и??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2002, 14:46:44 |
|
||
|
Как сделать курсор для update???
|
|||
|---|---|---|---|
|
#18+
т.е. ты хочеш открыть курсор и в процессе пробега по этому курсору хочеш менять его (и содержимое самого selecta) ? мне кажеться так нельзя ... нечто подобного можно добиться Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2002, 14:57:44 |
|
||
|
Как сделать курсор для update???
|
|||
|---|---|---|---|
|
#18+
BOL: DECLARE CURSOR Defines a cursor for row-at-a-time data retrieval. Syntax DECLARE cursor_name [INSENSITIVE] [SCROLL] CURSOR FOR {select_stmt | prepared_stmt_name} [FOR { READ ONLY | UPDATE [ OF column_list ] } ] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2002, 15:04:03 |
|
||
|
Как сделать курсор для update???
|
|||
|---|---|---|---|
|
#18+
Это я тоже видел, пришли лучше example, а не кусок help-a ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2002, 15:23:00 |
|
||
|
Как сделать курсор для update???
|
|||
|---|---|---|---|
|
#18+
если впадлу по BOL полазить, то держи drop table #Tmp go create table #Tmp (col int) insert into #Tmp values(1) insert into #Tmp values(2) insert into #Tmp values(3) declare @i int declare abc cursor for select col from #Tmp for update open abc fetch next from abc into @i WHILE @@FETCH_STATUS = 0 begin print @i update #Tmp set col = -@i where current of abc fetch next from abc into @i end close abc deallocate abc select * from #Tmp ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2002, 15:54:50 |
|
||
|
Как сделать курсор для update???
|
|||
|---|---|---|---|
|
#18+
Это намного лучше чем DECLARE cursor_name [INSENSITIVE] [SCROLL] CURSOR FOR {select_stmt | prepared_stmt_name} [FOR { READ ONLY | UPDATE [ OF column_list ] } ] Спасибо, я сделал то что хотел... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2002, 16:24:40 |
|
||
|
Как сделать курсор для update???
|
|||
|---|---|---|---|
|
#18+
How about trying to do it without a cursor? Highly discourage using this ugly Oracle method of processing a resultset using record-level approach! It's not for nothing that cursors are viewed in Transact-SQL as the method of last resourt. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2002, 20:54:19 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32035555&tid=1821932]: |
0ms |
get settings: |
6ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
55ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
37ms |
get tp. blocked users: |
1ms |
| others: | 227ms |
| total: | 349ms |

| 0 / 0 |
