用于模拟“desc”的等效SQL查询是什么?

时间:2014-09-15 09:04:46

标签: sql oracle

我正在为一组应用程序测试人员创建一个php页面,他们需要经常在测试过程中看到oracle数据库的内容。该页面从文本区域获取sql查询,并使用oci8库对数据库执行它。

但是,由于命令describe(简desc)是Oracle SQL * Plus的一个功能,我试图在sql查询中模拟它的功能。这是我到现在为止所提出的 -

SELECT column_name "Name",
                CASE WHEN nullable = 'Y' THEN 'NULL'
                WHEN nullable = 'N' THEN 'NOT NULL'
        END AS "Null",
   concat(concat(concat(data_type,'('),data_length),')') "Type"
FROM all_tab_columns
WHERE table_name='{$TABLE}'

这似乎适用于大多数表,但不适用于“v $ database”或“v $ instance”。我理解这些系统视图的引用不存在于“all_tab_columns”中,并且用户不会搜索它们,但我希望查询仅为了完整性而适用于所有表和视图。

所以,如果有人能提出更好的建议,请指导我。

1 个答案:

答案 0 :(得分:0)

您可以使用dbms_sql.describe_columns2获取与describe相同的信息。

需要付出相当大的努力才能让它真正起作用:你必须解析语句并从中获取元数据。好消息是:它适用于几乎任何查询。即使是包含计算列,联接等的视图或查询