Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Отлавливание курсора
|
|||
|---|---|---|---|
|
#18+
Хранимка возвращает в OUT параметр хэндл на курсор, который в дальнейшем будет использоваться в веб-приложении. Сохранятся думаю он буде либо в сессии, либо во вью стэйте. Логику закрытия курсора берет на себя веб-приложение. Такой вопрос: я так понимаю не закрывать курсор очень плохо(чем это чревато спросил в соседнем форуме по мускулю, думаю ответ будет аналогичным). Поэтому как отследить ситуацию при которой нужно закрыть курсор. Ну например когда пользователь ушел со страницы где этот курсор используется, либо вообще закрыл бровзер. Насчет перехода на другую страницу - страница, которая юзает курсор - это результат выборки организованный постранично с возможностью перехода на форму редактирования и затем возврата к результату - не хотелось бы что б при такой ситуации курсор закрывался _______________________________________________________ Господи, сколько ещё не сделано... А сколько ещё предстоит не сделать...! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2005, 17:41 |
|
||
|
Отлавливание курсора
|
|||
|---|---|---|---|
|
#18+
Лиман Артём...Поэтому как отследить ситуацию при которой нужно закрыть курсор. Ну например когда пользователь ушел со страницы где этот курсор используется, либо вообще закрыл бровзер...некоторые мысли по этому поводу /topic/152476&hl= зы. по сабжу: сомневаюсь, что такой подход вообще оправдан. Для чего предполагается использовать курсор? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2005, 13:44 |
|
||
|
Отлавливание курсора
|
|||
|---|---|---|---|
|
#18+
ы. по сабжу: сомневаюсь, что такой подход вообще оправдан. Для чего предполагается использовать курсор? вариант 4 может и не оправдна, не спорю, я только начинаю работать с асп и у меня есть задание организовать нормальную постраничную выборку и поэтому пробую все варианты. Вариант с курсорами мне показался наиболее простым, но как я сейчас вижу имеет некоторые недостатки, как например - необходимо постоянно держать открытым коннект к базу, что б не пересоздавать курсор заново при новом постбэке. Теперь поанирую попробовать вариант со временными таблицами (Вариант 2 по факу). Но и он мне что-то не очень - так как в нем при каждом постбэке приходится сначало создавать временную табличку размером с выборку, а потом ее укорачивать до нужной порции. Мне интересно, что будет эффективнее работать - постоянное переоткрытие курсора или постоянное заполнение и укорачивание временной таблицы. Что -то мне подсказывает, что варианты примерно равносильны, так как курсор, если не ошибаюсь, также основан на временных таблицах. Или этот вопрос лучше поднимать в форуме по мукулю? _______________________________________________________ Господи, сколько ещё не сделано... А сколько ещё предстоит не сделать...! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2005, 13:55 |
|
||
|
Отлавливание курсора
|
|||
|---|---|---|---|
|
#18+
всегда использовал для выборок подобие варианта №2 в принципе, использование курсора может быть оправдано на очень больших таблицах - лично не проверял.. да и подобный вопрос разумнее, конечно, поднимать на ГФ зы. результаты тестов интересно будет увидеть здесь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2005, 14:10 |
|
||
|
Отлавливание курсора
|
|||
|---|---|---|---|
|
#18+
2profil, еще один вопрос тогда. Курсоры мне позволяли создавать динамический запрос. Тоесть я мог менять имя таблицы, условие фильтра, сортировку. Со временными таблицами, что-то не пойму как это можна организовать, так как конструкция exec('...') для временных таблиц не доступна. Для кусора делал так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. _______________________________________________________ Господи, сколько ещё не сделано... А сколько ещё предстоит не сделать...! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2005, 15:03 |
|
||
|
Отлавливание курсора
|
|||
|---|---|---|---|
|
#18+
сейчас под рукой нет готового примера реализации, вечерком кину но можно использовать табличные переменные daclare @tmp table + я использовал sp_executesql - как-то надежнее =)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2005, 15:28 |
|
||
|
Отлавливание курсора
|
|||
|---|---|---|---|
|
#18+
все вопрос отпал. в exec('') можна использовать временные таблицы.Ура! А чем sp_executesql лучше? _______________________________________________________ Господи, сколько ещё не сделано... А сколько ещё предстоит не сделать...! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2005, 15:52 |
|
||
|
Отлавливание курсора
|
|||
|---|---|---|---|
|
#18+
то что я назвал надежнее - использование параметров в sp_executesql дает возможность защиты от SQL injection ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2005, 14:14 |
|
||
|
Отлавливание курсора
|
|||
|---|---|---|---|
|
#18+
вообщем от курсоров избавился вообще, и сделал мутированный вариант 2 - работаю не с локальными временными таблицами а с глобальными, дабы не дергать постоянно фильтр и сортировку. Привязываюсь к SID'у. Есть один вопросик - хотелось по завершении сеанса подчищать табличку, но не хочется завязываться на Global.asax-> Global.Session_End(Application_End), так как нужно организовать изолированность контрола. Можна ли как-то узнать о завершении сессии не выходя из контрола? Вот если б у Page.Session(HttpSessionState) было событие типа SessionEnd то можна было бы на него подписаться, а так мне не понятно как это сделать:( _______________________________________________________ Господи, сколько ещё не сделано... А сколько ещё предстоит не сделать...! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2005, 12:52 |
|
||
|
Отлавливание курсора
|
|||
|---|---|---|---|
|
#18+
Лиман АртёмМожна ли как-то узнать о завершении сессии не выходя из контрола?может я чего-то не так понимаю, но такое сделать никак нельзя + глобальные временные таблицы удаляются при обрыве коннекта. BOLCREATE TABLE ->Temporary Tables ... Global temporary tables are automatically dropped when the session that created the table ends and all other tasks have stopped referencing them.The association between a task and a table is maintained only for the life of a single Transact-SQL statement. This means that a global temporary table is dropped at the completion of the last Transact-SQL statement that was actively referencing the table when the creating session ended. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2005, 15:24 |
|
||
|
Отлавливание курсора
|
|||
|---|---|---|---|
|
#18+
хм, у меня при закрытии коннекта табличка никуда не девается, может дело в пулинге? _______________________________________________________ Господи, сколько ещё не сделано... А сколько ещё предстоит не сделать...! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2005, 15:47 |
|
||
|
|

start [/forum/topic.php?fid=18&msg=33043109&tid=1394104]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
23ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
37ms |
get tp. blocked users: |
1ms |
| others: | 214ms |
| total: | 310ms |

| 0 / 0 |
