我正在为一组应用程序测试人员创建一个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”中,并且用户不会搜索它们,但我希望查询仅为了完整性而适用于所有表和视图。
所以,如果有人能提出更好的建议,请指导我。
答案 0 :(得分:0)
您可以使用dbms_sql.describe_columns2
获取与describe
相同的信息。
需要付出相当大的努力才能让它真正起作用:你必须解析语句并从中获取元数据。好消息是:它适用于几乎任何查询。即使是包含计算列,联接等的视图或查询