Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
MaksProdavayko Member Откуда: Сообщений: 12 |
Здравствуйте, посоветуйте новичку: Есть темповая таблица Как можно проапдейтить в етой таблице данные используя именно цикл? (Как на картинке) К сообщению приложен файл. Размер - 16Kb |
25 авг 17, 18:19 [20750151] Ответить | Цитировать Сообщить модератору |
Гавриленко Сергей Алексеевич Member Откуда: Moscow Сообщений: 37155 |
Преподаватель велел циклом? |
25 авг 17, 18:27 [20750164] Ответить | Цитировать Сообщить модератору |
MaksProdavayko Member Откуда: Сообщений: 12 |
да... |
25 авг 17, 18:29 [20750178] Ответить | Цитировать Сообщить модератору |
Гавриленко Сергей Алексеевич Member Откуда: Moscow Сообщений: 37155 |
Спросите его, зачем он такой чуши вас пытается научить. |
25 авг 17, 18:30 [20750181] Ответить | Цитировать Сообщить модератору |
MaksProdavayko Member Откуда: Сообщений: 12 |
ето пока непонятно....спрошу но решения все равно надо))) |
25 авг 17, 18:34 [20750190] Ответить | Цитировать Сообщить модератору |
Ролг Хупин Member Откуда: Чебаркуль Сообщений: 3984 |
если такое спросите, то можно уже брать пиво и расслабляться ![]() |
||
25 авг 17, 18:57 [20750218] Ответить | Цитировать Сообщить модератору |
alexeyvg Member Откуда: Moscow Сообщений: 31783 |
|
||
26 авг 17, 03:12 [20750698] Ответить | Цитировать Сообщить модератору |
Massa52 Member Откуда: Сообщений: 382 |
DECLARE @t TABLE (ID int, DocRef int, DocValue int, DocValue2 int) INSERT INTO @t (ID, DocRef, DocValue, DocValue2) VALUES (812402,2404,13, NULL), (1012499, 9528, 23, NULL), (1145396, 14647, 34, NULL), (1361324, 22846, 54, NULL), (1365357, 22991, 55, NULL); select * from @t DECLARE @ID int DECLARE @i int = 1 SELECT @ID = MIN(ID) FROM @t WHILE @@ROWCOUNT > 0 BEGIN UPDATE @t SET DocValue2 = @i WHERE ID = @ID SET @i = @i + 1 SELECT TOP 1 @ID = ID FROM @t WHERE ID > @ID ORDER BY ID END select * from @t |
26 авг 17, 07:17 [20750720] Ответить | Цитировать Сообщить модератору |
Alibek B. Member Откуда: Сообщений: 3832 |
Как только люди не изощряются, лишь бы курсор не использовать. |
||
26 авг 17, 11:39 [20750893] Ответить | Цитировать Сообщить модератору |
mr.dfox Member Откуда: Где где .. в караганде Сообщений: 538 |
А разве использование курсора не будет считаться циклом? |
28 авг 17, 12:57 [20753345] Ответить | Цитировать Сообщить модератору |
Alibek B. Member Откуда: Сообщений: 3832 |
Так цикл и нужен. И на мой взгляд цикл с курсором лучше, чем цикл с построчным update. |
28 авг 17, 13:02 [20753366] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47052 |
Откуда вы это взяли? |
||
28 авг 17, 13:07 [20753392] Ответить | Цитировать Сообщить модератору |
mr.dfox Member Откуда: Где где .. в караганде Сообщений: 538 |
iap, наверно не правильно выразился - имел виду, перебор курсором в цикле |
28 авг 17, 13:29 [20753501] Ответить | Цитировать Сообщить модератору |
alexeyvg Member Откуда: Moscow Сообщений: 31783 |
|
||
28 авг 17, 14:07 [20753662] Ответить | Цитировать Сообщить модератору |
LSV Member [заблокирован] Откуда: Киев Сообщений: 30817 |
Оно ?DECLARE @t TABLE (ID int, DocRef int, DocValue int, DocValue2 int) INSERT INTO @t (ID, DocRef, DocValue, DocValue2) VALUES (812402,2404,13, NULL), (1012499, 9528, 23, NULL), (1145396, 14647, 34, NULL), (1361324, 22846, 54, NULL), (1365357, 22991, 55, NULL); declare @x int, @xx int set @xx=1 DECLARE UpdCol CURSOR FOR SELECT ID FROM @t order by 1 OPEN UpdCol FETCH NEXT FROM UpdCol INTO @x WHILE @@FETCH_STATUS = 0 BEGIN update @t set DocValue2 = @xx where ID=@x set @xx = @xx + 1 FETCH NEXT FROM UpdCol INTO @x END CLOSE UpdCol DEALLOCATE UpdCol select * from @t order by id |
28 авг 17, 14:50 [20753852] Ответить | Цитировать Сообщить модератору |
Alibek B. Member Откуда: Сообщений: 3832 |
Не оно. Есть же current of, зачем нужны эти костыли? |
||
28 авг 17, 15:18 [20753961] Ответить | Цитировать Сообщить модератору |
LSV Member [заблокирован] Откуда: Киев Сообщений: 30817 |
Раз версия не указана, надо писать наиболее стандартный код. |
||||
28 авг 17, 16:42 [20754250] Ответить | Цитировать Сообщить модератору |
Нектотам
Guest |
LSV, В версии 7.0 уже был. В 2017 вроде всё еще есть. Я не уверен, но, кажется, даже в 6.5 был, но увы, проверить это через почти 20 лет тяжело. |
29 авг 17, 15:06 [20756374] Ответить | Цитировать Сообщить модератору |
Нектотам
Guest |
LSV, [url=https://web.archive.org/web/20000302222122/http://msdn.microsoft.com:80/library/psdk/sql/ua-uz_3.htm]Пруф про 7.0 из глубины веков[/url] |
29 авг 17, 15:30 [20756466] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |