Code: Select all
using Devart.Data.Oracle;
using System.Data;
namespace DevartBug
{
class Program
{
static void Main(string[] args)
{
using (var cn = OpenConnection())
using (var createTableCmd = new OracleCommand("CREATE TABLE this_table_is_more_than_30_characters_long(id NUMBER(9) NOT NULL)", cn))
using (var selectCmd = new OracleCommand("SELECT * FROM this_table_is_more_than_30_characters_long", cn))
{
TryDropTable(cn);
createTableCmd.ExecuteNonQuery();
using (var reader = selectCmd.ExecuteReader(CommandBehavior.SchemaOnly | CommandBehavior.KeyInfo))
{
// this line fails with Devart.Data.Oracle.OracleException
// 'ORA-06502: PL/SQL: numeric or value error: character string buffer too small ORA - 06512: at line 3'
var schema = reader.GetSchemaTable();
}
}
}
static OracleConnection OpenConnection()
{
var cn = new OracleConnection("Direct=true;Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=my_host)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=my_service_name)));User ID=my_user_id;Password=my_password");
cn.Open();
return cn;
}
static void TryDropTable(OracleConnection cn)
{
try
{
using (var cmd = new OracleCommand("DROP TABLE this_table_is_more_than_30_characters_long", cn))
{
cmd.ExecuteNonQuery();
}
}
catch { }
}
}
}