|
Проблема с вызовом функции возвращающей табличное значение из хранимой процедуры
|
|||
---|---|---|---|
#18+
Здравствуйте. Стоит MS SQL 2008 R2 Есть функция, возвращающая табличное значение Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
Эту функцию я вызываю из хранимой процедуры: Код: sql 1. 2. 3. 4. 5. 6.
Сами запросы работают отлично, когда их запускаешь просто в запросе. Когда сделал процедуру и вызываю через нее функцию - запрос вешается. Нашел точную причину, из-за чего запрос зависает: Когда я вызываю функцию из запроса, я передаю ей параметр @ReportDate, перед этим вызывая над ним функцию DATEADD. Код: sql 1.
Если вместо @ReportDate написать например '2014-08-01', функция отлично работает. Когда вместо литерала в функцию подается переменная - все ломается. Помогите пожалуйста исправить ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2014, 16:31 |
|
Проблема с вызовом функции возвращающей табличное значение из хранимой процедуры
|
|||
---|---|---|---|
#18+
Поправка. Проблему я решил, объявив еще одну переменную и присваивая ей значение @ReportDate при создании Код: sql 1. 2.
Однако вопрос остается. Почему я не могу передавать в функцию переменную, которую передал в процедуру? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2014, 16:38 |
|
Проблема с вызовом функции возвращающей табличное значение из хранимой процедуры
|
|||
---|---|---|---|
#18+
Bandicoot_NSK, потому что аргументом функции и процедуры не может быть сложное выражение, например, вызов встроенной функции. Только литеральные константы, переменные и поля таблиц (в APPLY). В скалярную функцию можно передать поле и без APPLY. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2014, 16:41 |
|
Проблема с вызовом функции возвращающей табличное значение из хранимой процедуры
|
|||
---|---|---|---|
#18+
Bandicoot_NSK, http://blogs.msdn.com/b/turgays/archive/2013/09/10/parameter-sniffing-problem-and-workarounds.aspx ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2014, 16:42 |
|
Проблема с вызовом функции возвращающей табличное значение из хранимой процедуры
|
|||
---|---|---|---|
#18+
Bandicoot_NSKЕсли вместо @ReportDate написать например '2014-08-01', функция отлично работает.А вообще, я тоже кое в чём бывает ошибаюсь... ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2014, 16:44 |
|
|
start [/forum/topic.php?fid=46&gotonew=1&tid=1700836]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
46ms |
get topic data: |
13ms |
get first new msg: |
9ms |
get forum data: |
3ms |
get page messages: |
55ms |
get tp. blocked users: |
2ms |
others: | 252ms |
total: | 414ms |
0 / 0 |