0

我在.netFillSchema上使用。OracleDataAdapterSelectCommand全局临时表上工作。

对于第一次运行,这很好用。我会得到全局临时表的架构

然后我删除了那个临时表和一个具有不同模式的新临时表。

之后,对于第二次运行,该FillSchema方法仍将返回旧删除的临时表中的模式。

我错过了什么吗?select 命令不应该从新版本的临时表中查询架构吗?

谢谢你的帮助!

4

2 回答 2

0

什么不起作用: FillSchema 使用的 OracleDataAdapter.SelectCommand 是:

从表名中选择 *

什么有效: 我需要将该查询更改为确切的模式,然后它可以工作:

从 TableName 中选择 column1,column2,column3

我不明白为什么,但这解决了我的问题。它将返回新全局临时表的模式。这是oracle服务器的缓存问题吗?因为 tableName 总是一样的?

于 2014-10-16T08:17:35.207 回答
-1

使用程序的方式来解决这个问题

OracleParameter inputParam = new OracleParameter("TABLE_NAME_IN",OracleDbType.Varchar2,"TEST",ParameterDirection.Input); //Query TableName
OracleParameter refParam = new OracleParameter("OUTPUT",OracleDbType.RefCursor,ParameterDirection.Output);//RefCursor
DataTable dt = new DataTable();//Fill DataTable     
using (OracleCommand dbCommand = new OracleCommand("PKG_SYS.SELECT_TABLE_DATA",orclConnection))
{
    dbCommand.CommandType = CommandType.StoredProcedure;
    dbCommand.Parameters.Add(inputParam);
    dbCommand.Parameters.Add(refParam);
    using (OracleDataAdapter da = new OracleDataAdapter())
    {
        da.SelectCommand = dbCommand;
        da.Fill(dt);
     }
}
于 2015-12-22T07:49:23.850 回答