我在.net中的FillSchema
上使用OracleDataAdapter
。 SelectCommand
适用于全局临时表。
首次运行时,效果很好。我将获得全局临时表的模式
然后我删除了临时表和一个具有不同模式的新临时表。
之后,对于第二次运行,FillSchema
方法仍将从旧的删除临时表中返回模式。
我错过了什么吗?不应该使用select命令从新版本的临时表中查询模式吗?
感谢您的帮助!
答案 0 :(得分:0)
什么行不通: 使用的OracleDataAdapter.SelectCommand FillSchema是:
从TableName中选择*
什么有效: 我需要将该查询更改为确切的架构, 然后它起作用:
从TableName
中选择column1,column2,column3我不明白为什么,但这解决了我的问题。 它将返回新的全局临时表的模式。 这是oracle服务器的缓存问题吗?因为 tableName总是一样的吗?
答案 1 :(得分:-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);
}
}