|
|
|
Опытным пользователям SQL. BUG или нет?
|
|||
|---|---|---|---|
|
#18+
Начиная с 6.5 много bugов исправил MS SQL, но вот всегда меня мучил один вопрос почему они не обращают внимание на следующий алгоритм: Код: 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. Почему это не работает? Кто знает ответ при котором этот алгоритм может работать, напоминаю клиентов(app приложения) менять нельзя. Писал как-то об этом в microsoft года 4 назад, так там и ухом не повели, типа это не к нам и куда-то перенаправили ссылки нет как и письма тоже ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2002, 10:57:16 |
|
||
|
Опытным пользователям SQL. BUG или нет?
|
|||
|---|---|---|---|
|
#18+
Вложенный INSERT EXEC является одним их ограничений. Перепишите код по-человечески и проблема исчезнет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2002, 11:42:31 |
|
||
|
Опытным пользователям SQL. BUG или нет?
|
|||
|---|---|---|---|
|
#18+
jimmers тут ясно же выложена проблемма, переписать нет возможности! Исправление процедур заставит изменить КЛИЕНТСКИЕ ПРИЛОЖЕНИЯ! Вы у себя там все в одиночку пишите? Лично у нас такого нет! И программисты те уже разъехались кто-куда еще с 99-2000год. Приложения написаны на разных языках VC(DB-Library),VB(DB-Library),Access(ODBC). Вам интересно заново сидеть за ними? При решение третьей проблеммы пришлось просто перетаскивать код. По человечески дураку понятно, а как в жизни бывает. Вот у вас не дай бог конечно разбежится народ и такое же будет. Я задаюсь вопросом BUG это или нет! Синтаксически здесь все правильно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2002, 11:51:03 |
|
||
|
Опытным пользователям SQL. BUG или нет?
|
|||
|---|---|---|---|
|
#18+
Ответ на Ваш вопрос - это НЕ баг. Это ограничение SQL Server'а. А вот то, что код написан без учета этой особенности - это действительно баг. Перепишите. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2002, 11:55:52 |
|
||
|
Опытным пользователям SQL. BUG или нет?
|
|||
|---|---|---|---|
|
#18+
2 Flint-San на: Синтаксически здесь все правильно. Вот есть такое ограничение на количество вызываемых друг-из-друга процедур: Nesting occurs when one stored procedure calls another. The nesting level is incremented when the called procedure begins execution, and it is decremented when the called procedure has finished. Exceeding the maximum of 16 nesting levels causes the whole calling procedure chain to fail. Синтаксически вы можете написать хоть 25 вложенных вызовов... А практически - ровно на 16-ом получите ошибку времени исполнения, это чей баг? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2002, 12:36:30 |
|
||
|
Опытным пользователям SQL. BUG или нет?
|
|||
|---|---|---|---|
|
#18+
qu-qu ну так это ограничение хорошо расписано в BOL и там ясно написано нельзя. Что же касается: INSERT #tbl EXEC sp1 от версии к версии SQL, я не встретил ни в одном BOL описание на ограничении вложености при таком выполнении. Можете мне показать это ограничение в BOL? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2002, 12:54:46 |
|
||
|
Опытным пользователям SQL. BUG или нет?
|
|||
|---|---|---|---|
|
#18+
Откройте Books Online: 8164 16 An INSERT/EXEC statement cannot be nested. либо 8164 16 An INSERT EXEC statement cannot be nested. То есть, об этом ограничении давно известно. Другой вопрос, почему о нем так мало информации, кроме констатации факта. Видимо потому, что до недавнего времени (вроде в 7-ке еще) INSERT ... EXEC не был документирован, хотя я не уверен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2002, 13:07:22 |
|
||
|
Опытным пользователям SQL. BUG или нет?
|
|||
|---|---|---|---|
|
#18+
INSERT ... EXEC не было в 4.0 (и недокументированного в т.ч.), в 6.0 он уже был документирован. очевидно предпологалось, что его будут использовать для передачи данных с одного сервера на другой, поэтому на таких проблеммах не останавливались ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2002, 14:21:42 |
|
||
|
Опытным пользователям SQL. BUG или нет?
|
|||
|---|---|---|---|
|
#18+
Так и есть, очень часто делали выполнение таких скриптов и брали данные с одного сервера 6.5(RPC) на другой 6.5. В BOL 6.5 столь мало значимая строчка (8630) sysmessages отсутствует. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2002, 14:42:44 |
|
||
|
Опытным пользователям SQL. BUG или нет?
|
|||
|---|---|---|---|
|
#18+
Поправка: В BOL 6.5 столь мало значимая строчка (8164) sysmessages отсутствует. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2002, 14:48:08 |
|
||
|
Опытным пользователям SQL. BUG или нет?
|
|||
|---|---|---|---|
|
#18+
2Flint-San: Правильно, отсутствует. Зато она есть здесь: Q187491 2SergSuper: Не знаю, где-то я читал вроде, что INSERT ... EXEC в BOL (в части описания INSERT) не был ранее описан. К сожалению, проверить на 7-ке не могу... Может и ошибаюсь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2002, 14:59:48 |
|
||
|
Опытным пользователям SQL. BUG или нет?
|
|||
|---|---|---|---|
|
#18+
2 jimmers INSERT ... EXEC в BOL (в части описания INSERT как T-SQL) есть в 7. Даже пример приведен. Но вот о том, что нельзя использовать вложенные INSERT ... EXEC там скромно умалчивается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2002, 19:53:39 |
|
||
|
Опытным пользователям SQL. BUG или нет?
|
|||
|---|---|---|---|
|
#18+
2 ВладимирМ INSERT ... EXEC в BOL (в части описания INSERT как T-SQL) есть даже в 6.5 (только в разделе "What's New!"). Даже пример приведен. Но вот о том, что нельзя использовать вложенные INSERT ... EXEC там точно так же скромно умалчивается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2002, 10:47:21 |
|
||
|
Опытным пользователям SQL. BUG или нет?
|
|||
|---|---|---|---|
|
#18+
2 Flint-San А какая версия MSSQLServer? Если 2000, то можно легко вопрос решить применением функций (UDF), например: create function funcSourceCalc() returns @t1 table (fld1 int) as begin insert into @t1(fld1) values(100) return end go create PROC SourceCalc as select * from dbo.funcSourceCalc() GO create function funcModifyCalc() returns @t1 table (fld1 int) as begin insert into @t1 (fld1) select * from dbo.funcSourceCalc() update @t1 set fld1=fld1*100 return end go create PROC ModifyCalc as select * from dbo.funcModifyCalc() GO create function funcInetCalc() returns @t1 table (fld1 int) as begin insert into @t1 (fld1) select * from dbo.funcModifyCalc() update @t1 set fld1=fld1+1 return end go create PROC InetCalc as select * from dbo.funcInetCalc() GO ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2002, 09:29:55 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32072518&tid=1818450]: |
0ms |
get settings: |
6ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
41ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
29ms |
get tp. blocked users: |
1ms |
| others: | 210ms |
| total: | 310ms |

| 0 / 0 |
