用oracle描述查询(.Net Connector)

时间:2009-05-15 09:25:17

标签: .net oracle

我正在使用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: (

1 个答案:

答案 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中定义的特定视图。