Oracle 甲骨文:我如何反思一个观点?
如何在Oracle中反思视图?例如,如果我有Oracle 甲骨文:我如何反思一个观点?,oracle,view,introspection,Oracle,View,Introspection,如何在Oracle中反思视图?例如,如果我有 create view v as select foo, bar from baz 我想知道foo和bar是选择的第一列和第二列。您也可以使用所有的选项卡列查看。因此视图v的前两列类似于: SELECT * FROM all_tab_columns WHERE TABLE_NAME = 'V' AND column_id IN (1, 2); 然后,您可以询问特定列: SELECT COUNT(*) TOTAL FROM all_ta
create view v as select foo, bar from baz
我想知道
foo
和bar
是选择的第一列和第二列。您也可以使用所有的选项卡列查看。因此视图v
的前两列类似于:
SELECT *
FROM all_tab_columns
WHERE TABLE_NAME = 'V' AND column_id IN (1, 2);
然后,您可以询问特定列:
SELECT COUNT(*) TOTAL
FROM all_tab_columns
WHERE TABLE_NAME = 'V' AND (table_name,column_id) IN (('FOO',1), ('BAR',2));
如果总计为2,则表示选择的第一列和第二列为foo
和bar
。您可以使用case或decode使其更具可读性:
SELECT CASE WHEN TOTAL = 2 THEN 1 ELSE 0 END RESULT FROM
(SELECT COUNT(*) TOTAL
FROM all_tab_columns
WHERE TABLE_NAME = 'V' AND (table_name,column_id) IN (('FOO',1), ('BAR',2)));