У меня есть классическое приложение asp (ASP 3.0, работающее под управлением Windows 2000/IIS 5.0), которое позволяет пользователям писать собственные SQL-запросы для извлечения данных из базы данных (Oracle 10g), как и SQL Developer. Иногда пользователи пишут сложные запросы, которые выполняются неопределенно долго, хотя пользователь будет нажимать кнопку «Назад», чтобы вернуться на предыдущую страницу, запрос может все еще выполняться в базе данных. Теперь пользователи запрашивают у них функциональность, чтобы убить запрос одним нажатием кнопки.classic asp async sql-исполнение
Я новичок в asp, поэтому я не уверен, что это возможно в asp. Мы используем объект ADODB.RecordSet для извлечения данных с помощью RecordSet.Open и RecordSet.GetRows. Пожалуйста, сообщите, насколько это возможно в классическом asp.
Set connection = Server.CreateObject("ADODB.Connection")
connection.Open DATA_SOURCE, LOGON_ID, PASSWORD
Set resultset = Server.CreateObject("ADODB.Recordset")
Dim sql
sql="select sysdate from dual"
resultset.Open sql, connection
Dim DBData
DBData = resultset.GetRows(NUMROWS)
resultset.close
connection.close
Set resultset = Nothing
Set connection = Nothing
Не уверен, если это поможет, но вы могли бы попытаться обернуть функции базы данных в ' Class' и закройте соединение в 'Private Sub Class_Terminate'. – Passerby
Вам необходимо вызвать метод Connection.Cancel. Другим вариантом будет использование транзакций и вызов Connection.RollbackTrans. Если запросы выполняются как своего рода фоновый процесс ... вы можете только вызвать Session.abandon (обратите внимание, что это уничтожит ВСЕ переменные и объекты сеанса пользователя ... не только один запрос базы данных) – AardVark71
Является ли sysdate полем. Поскольку такого ключевого слова нет в sql – polin