Hi there,
Not sure if this is issue of this lib or perhaps issue of the connection string, but arguments for stored procedures are not filled in. As I figured out after debugging the problem in restrictions for Arguments schema. When I set the first one (owner) to the null -- then it returns all the arguments, but further parsing is slow, so here is workaround I have implemented for a while to make it work. If anyone advice how I can make it work without patching I will be appreciated. Also I can send a patch file if needed.
If it is matter I use Oracle.ManagedDataAccess.Client provider
file: .\dbschemareader\databaseschemareader\schemareader.cs
line: 634
Not sure if this is issue of this lib or perhaps issue of the connection string, but arguments for stored procedures are not filled in. As I figured out after debugging the problem in restrictions for Arguments schema. When I set the first one (owner) to the null -- then it returns all the arguments, but further parsing is slow, so here is workaround I have implemented for a while to make it work. If anyone advice how I can make it work without patching I will be appreciated. Also I can send a patch file if needed.
If it is matter I use Oracle.ManagedDataAccess.Client provider
file: .\dbschemareader\databaseschemareader\schemareader.cs
line: 634
protected virtual DataTable StoredProcedureArguments(string storedProcedureName, DbConnection connection)
{
//different collections here- we could just if(IsOracle)
string collectionName = ProcedureParametersCollectionName;
if (!SchemaCollectionExists(connection, collectionName)) collectionName = "Arguments";
if (ProviderType == SqlType.MySql) collectionName = "Procedure Parameters";
else if (ProviderType == SqlType.Oracle) collectionName = "Arguments"; //Oracle, assume packages
if (!SchemaCollectionExists(connection, collectionName)) return CreateDataTable(ProcedureParametersCollectionName);
DataTable dt;
string[] restrictions = SchemaRestrictions.ForRoutine(connection, collectionName, storedProcedureName);
if (ProviderType == SqlType.Oracle)
{
dt = connection.GetSchema(collectionName).Select("OWNER = '" + restrictions[0] + "'").CopyToDataTable();
}
else
{
dt = connection.GetSchema(collectionName, restrictions);
}
dt.TableName = ProcedureParametersCollectionName;
return dt;
}