0
db 연결을 닫기 전에 루아 스크립트에서 열려있는 모든 커서를 닫는 적절한 패턴은 무엇입니까? Cursor를 생성하는 여러 곳에서 호출되는 도우미 함수 rows()가 있습니다. end() 함수에서 생성 된 모든 함수를 닫을 수 있기를 원합니다. 결과 세트가 끝날 때까지 커서를 닫지 않습니다 rows()
에 의해 반환루아에서 열린 커서를 모두 닫으려면 어떻게해야합니까?
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
데이터베이스 처리는 "기본"루아의 일부가 아닙니다. 맞습니까? 라이브러리를 사용하고 있다면 다른 라이브러리가 서로 다른 구현과 동작을 할 수 있으므로 라이브러리 중 하나를 언급해야합니다. –
참고 : end는 키워드이며 함수 이름으로 사용할 수 없습니다. – daurnimator