
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
30.12.2008, 15:03
|
|||
|---|---|---|---|
Процедура Update + select |
|||
|
#18+
Доброго всем дня! Написал процедурку которая тупо увеличивает число. Например: Код: plaintext 1. 2. 3. 4. допустим в таблице ret = 4 считываю ret = 4 обновляю ret на 5 теперь должно считывать ret = 5 и вернуть мне 5, но возвращает 4 почему? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
30.12.2008, 15:11
|
|||
|---|---|---|---|
Процедура Update + select |
|||
|
#18+
ASE 12.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
30.12.2008, 15:55
|
|||
|---|---|---|---|
Процедура Update + select |
|||
|
#18+
ImperousASE 12.5 Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. результат Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. select @@version Adaptive Server Enterprise/12.5.3/EBF 12869 ESD#4/P/Sun_svr4/OS 5.8/ase1253/1923/64-bit/FBO/Thu Sep 8 16:05:41 2005 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
30.12.2008, 16:23
|
|||
|---|---|---|---|
Процедура Update + select |
|||
|
#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. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
30.12.2008, 16:41
|
|||
|---|---|---|---|
Процедура Update + select |
|||
|
#18+
Вообще-то можно делать так: update ... set col_name=col_name + 1, @var=col_name+1 where ... Таким образом, один раз выполняя запрос, делаем 2 действия (и обновляем значение в таблице и в переменную его сохраняем). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
30.12.2008, 16:44
|
|||
|---|---|---|---|
Процедура Update + select |
|||
|
#18+
upВообще-то можно делать так: update ... set col_name=col_name + 1, @var=col_name+1 where ... Таким образом, один раз выполняя запрос, делаем 2 действия (и обновляем значение в таблице и в переменную его сохраняем). да, наверное.. но вот мой код зараза возвращает не то что надо и не могу понять почему... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
30.12.2008, 16:54
|
|||
|---|---|---|---|
Процедура Update + select |
|||
|
#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. Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
30.12.2008, 22:08
|
|||
|---|---|---|---|
Процедура Update + select |
|||
|
#18+
Imperous, select @nnumber = (select nnumber from nsi_numb where ctable=@ctable and cfield=@cfield Присвоили значение из базы (старое значение) update nsi_numb set nnumber=@nnumber+1,dat_mode=getdate() where ctable=@ctable and cfield=@cfield Записали в nnumber это @nnumber+1 select @nnumber - выбрали значение переменной но nnumber=@nnumber+1 не @nnumber=@nnumber+1 т.е саму переменную не увеличил ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
30.12.2008, 23:24
|
|||
|---|---|---|---|
Процедура Update + select |
|||
|
#18+
maxATCImperous, select @nnumber = (select nnumber from nsi_numb where ctable=@ctable and cfield=@cfield Присвоили значение из базы (старое значение) update nsi_numb set nnumber=@nnumber+1,dat_mode=getdate() where ctable=@ctable and cfield=@cfield Записали в nnumber это @nnumber+1 select @nnumber - выбрали значение переменной но nnumber=@nnumber+1 не @nnumber=@nnumber+1 т.е саму переменную не увеличил в том то и дело, что мне надо вытянуть единицу, а затем ее увеличить в базе, затем очередное чтение из базы - он вытягивает двойку, возвращает ее, и после увеличивает на единицу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
30.12.2008, 23:29
|
|||
|---|---|---|---|
Процедура Update + select |
|||
|
#18+
т.е. тогда когда надо чтоб сработал IF, получается что сначала он берет старое значение (его и возвращает), затем делает IF, затем увеличивает на один. А надо в таком порядке: - IF - select @nnumber - update nsi_numb set nnumber+1 where .... и возвратить мне @nnumber ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
31.12.2008, 00:15
|
|||
|---|---|---|---|
Процедура Update + select |
|||
|
#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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
31.12.2008, 11:18
|
|||
|---|---|---|---|
Процедура Update + select |
|||
|
#18+
White Owl, ОГРОМНОЕ СПАСИБИЩЕ!!!! работает как надо, только чуток подправил Код: 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. Всех с наступающим!!!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
31.12.2008, 18:09
|
|||
|---|---|---|---|
Процедура Update + select |
|||
|
#18+
Imperousработает как надо, только чуток подправилНу да, переменную я объявить забыл... А вот в BEGIN/END тело процедуры прятать не обязательно. TransactSQL этого не требует. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
05.01.2009, 11:50
|
|||
|---|---|---|---|
Процедура Update + select |
|||
|
#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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
05.01.2009, 12:13
|
|||
|---|---|---|---|
Процедура Update + select |
|||
|
#18+
потестил и снова исправил :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
09.01.2009, 15:56
|
|||
|---|---|---|---|
Процедура Update + select |
|||
|
#18+
Imperous пишет: > Автор: "Imperous" > Доброго всем дня! > Написал процедурку которая тупо увеличивает число. > > Например: > > select @ret = (select ret from tab1) > update tab1 set ret = @ret + *1* > и вернуть мне 5, но возвращает 4 > почему? Потому что write skew скорее всего. Надо писать Код: plaintext или проще Код: plaintext Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=55&tablet=1&tid=2011215]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
33ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
55ms |
get tp. blocked users: |
2ms |
| others: | 228ms |
| total: | 365ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...