//创建统计临时表
qryTj.Close;
qryTj.SQL.Text:='CREATE GLOBAL TEMPORARY TABLE tj(Name varchar2(20), rq varchar2(20), shl int)ON COMMIT PRESERVE ROWS';
qryTj.ExecSQL;
在删除临时表时出错:
qryTj.Close;
qryTj.SQL.Text:='drop TABLE tj';
qryTj.ExecSQL;提示错误为:ora-14452:试图创建、更改或删除正在使用的临时表中的索引
是什么问题?
qryTj.Close;
qryTj.SQL.Text:='CREATE GLOBAL TEMPORARY TABLE tj(Name varchar2(20), rq varchar2(20), shl int)ON COMMIT PRESERVE ROWS';
qryTj.ExecSQL;
在删除临时表时出错:
qryTj.Close;
qryTj.SQL.Text:='drop TABLE tj';
qryTj.ExecSQL;提示错误为:ora-14452:试图创建、更改或删除正在使用的临时表中的索引
是什么问题?
看看程序里是不是有其他的dataset正在使用?是ADO么?
我不太明白你的意思,是在drop table之前free掉数据控件呢,还是之后?之前free的话没有了数据控件就不能做drop table了,之后free则毫无意义,还是删不掉
似乎free之后临时表也不会自动删除,那么到底是怎么回事呢?
我怎么也关不掉连接呀,
acConnection.Connected := false;
qryTj.Active := false;
acConnection.Connected := true;
qryTemp.Close;
qryTemp.SQL.Text:='drop table tj';
qryTemp.ExecSQL;
可是问题依旧
adoquery1.sql.add('select tmptable ');
adoquery1.open;
{...}
adoquery1.close;
{you must be add this code
adoquery1.free;}
adoqueyr2.sql.add('delete tmptable');
adoquery2.execsql;//error,you can not delete the table
现在我试过将adoquery1.free掉,包括adoconnection也free了,可是还不行呀
还有什么地方需要free吗?dgGrid1? datasource1?
如
adoquery1.connection:= nil;
adoquery1.free;adoconnection.connectionstring:= nil;
adoconnection.free;
接你的方法试过了,也不成:(