Каков правильный шаблон для закрытия всех открытых курсоров в сценарии lua перед закрытием соединения db? У меня есть вспомогательная функция rows(), которая вызывается в нескольких местах, которая создает курсоры, в функции end() Я хочу иметь возможность закрыть все созданные.Как закрыть все открытые курсоры в Lua?
function rows (sql_statement)
local cursor = assert (con:execute (sql_statement));
local closed = false;
return function()
if (closed) then return nil end;
local row = {};
result = cursor:fetch(row);
if (result == nil) then
cursor:close();
closed = true;
return nil;
end;
return row;
end
end
function end()
-- this con:close() call fails because of open cursors
con:close();
env:close();
end
Обработка баз данных не является частью «родной» Lua, не так ли? Если вы используете библиотеку, возможно, вы должны указать, какой из них, потому что разные могут иметь разные реализации и поведение. –
note: end - это ключевое слово и не может использоваться как имя функции. – daurnimator