|
|
|
Детский вопросик по MS SQL
|
|||
|---|---|---|---|
|
#18+
Подскажите совершенно дикому в MS SQL, как сделать обработку результатов запроса, которую я на InterBase написал бы так: For select a1, a2, ... from table1 where ... into :a1, :a2, ... do begin /*делаем что-то*/ end В MS SQL, если я правильно понимаю, необходимо объявить курсор declare @a1 .... DECLARE Cur1 CURSOR FOR SELECT a1, a2, ... from table1 OPEN Cur1 WHILE 1=1 BEGIN FETCH Cur1 INTO @a1, @a2, ... IF @@fetch_status=-1 BREAK IF @@fetch_status=-2 CONTINUE /*делаем что-то*/ end Но такое хождение по выборке работает медленно (злая судьба заставляет использовать MS SQL 6.5 :-( ). Подскажите, как делать правильно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2002, 13:56:13 |
|
||
|
Детский вопросик по MS SQL
|
|||
|---|---|---|---|
|
#18+
SQL Server ореинтирован на работу с набором строк, а не с конкретной строкой ... так что курсор работает медленно ... ничего не поделаеш ... может имеет смысл попробовать сделать без курсора ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2002, 14:00:08 |
|
||
|
Детский вопросик по MS SQL
|
|||
|---|---|---|---|
|
#18+
Обычно делается так: declare c cursor for select ... open c fetch c into @var1, @var2, ... while @@fetch_status = 0 begin -- обработка fetch c into @var1, @var2, ... end close c deallocate c Если данные через курсор изменять не требуется, можно написать declare c cursor fast_forward for ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2002, 14:01:24 |
|
||
|
Детский вопросик по MS SQL
|
|||
|---|---|---|---|
|
#18+
А если /*делаем что-то*/ заключается в нескольких Update или Delete? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2002, 14:04:13 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32045527&tid=1820894]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
58ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
| others: | 238ms |
| total: | 392ms |

| 0 / 0 |
