закрытие курсора ссылки из coldfusion - PullRequest
1 голос
/ 23 февраля 2012

Я пишу хранимые процедуры и функции в Oracle, которые возвращают ссылки на ColdFusion, и все работает отлично. Но все, что я прочитал, говорит о том, что мне нужно явно закрыть курсор или ref-курсор, когда я закончу с этим, иначе я рискну кончиться ручками позже.

Но если я закрою курсор в конце функции / сохраненного процесса, данные не возвращаются в ColdFusion.

Итак, как мне закрыть курсор ref, как только я закончу с ним?

Ответы [ 2 ]

2 голосов
/ 23 февраля 2012

Когда соединение с базой данных закрыто, курсор также будет закрыт.В администраторе CF у вас есть ограничение на количество соединений с базой данных.Если вы используете cfqueryparam для каждого значения, передаваемого в Oracle, вы разрешите повторное использование одного и того же соединения для одного и того же запроса (если не истекло время ожидания).Вы должны убедиться, что лимит пула курсоров в Oracle и лимит соединения в CF admin совпадают.Похоже, что у этого приложения никогда не было проблем, так что, вероятно, так оно и есть.

0 голосов
/ 23 февраля 2012

Ваше приложение ColdFusion будет отвечать за закрытие курсора, который возвращается к нему.

Я не эксперт по ColdFusion, поэтому не совсем уверен в синтаксисе, который вам нужен. Но клиентские языки, которые взаимодействуют с базами данных, неизменно имеют какой-то объект или структуру для представления набора результатов, из которого вы выбираете. Когда вы закончите извлекать данные, появится какой-то метод close, который закроет набор результатов. Это также закроет REF CURSOR в базе данных. Убедитесь, что ваше приложение ColdFusion всегда вызывает метод close, даже если при извлечении данных возникает исключение - наиболее частая причина утечек курсора заключается в том, что клиентское приложение не закрывает курсоры в обработчике исключений.

...