我正在使用Oracle Express Edition,我希望以编程方式在我的程序(.Net C#,Microsoft oracle连接器)中获取表信息(列名,类型,大小等)。
在SqlPlus中,当我发出命令“desc< tablename>”它完美地工作并打印有关表格的所有信息。
现在我想以编程方式进行。我试图给出查询“desc< tablename>”但它失败了。然后我在某处读取desc是一个存储过程,我们必须将其称为存储过程,然后我尝试使用代码,它失败并出现错误,
代码1
private OracleDataReader OracleDescribe(string tablename)
{
OracleCommand cmd = new OracleCommand("describe " + tablename, OracleConn);
return cmd.ExecuteReader();
}
错误1
Invalid SQL Statement
代码2
private OracleDataReader OracleDescribe(string tablename)
{
OracleCommand cmd = new OracleCommand("describe", OracleConn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("table", OracleType.VarChar).Value = tablename;
return cmd.ExecuteReader();
}
错误2
Encountered the symbol ">" when expecting one of the following: (
答案 0 :(得分:3)
对系统的元数据视图/表使用查询。 E.g:
SELECT TABLE_NAME, COLUMN_NAME, DATA_TYPE, DATA_LENGTH,
DATA_PRECISION, DATA_SCALE, NULLABLE, DATA_DEFAULT, CHAR_LENGTH
FROM ALL_TAB_COLUMNS
WHERE OWNER='SCOTT' AND TABLE_NAME IN ('EMP', 'DEPT')
ORDER BY TABLE_NAME ASC, COLUMN_ID ASC
您还可以查看DbConnection上的GetSchema方法(如果您使用的是.NET 2.0或更高版本,建议使用),并检查MSDN中定义的特定视图。