在执行Oracle之前检查列是否存在

时间:2018-08-17 08:07:31

标签: sql oracle

我有疑问:

 SELECT Table_Name   AS Table_Name,
        'select  count(*) from '
        || Table_Name
        || 'where language!=0' AS Query
   FROM All_Tables
  WHERE Owner = 'databaseName'
    AND ( Table_Name LIKE 'HH%'
     OR Table_Name LIKE 'TT%' )

但是,并非所有表都具有列language。如何检查该列是否存在,如果存在则检查language值?

3 个答案:

答案 0 :(得分:3)

列名存储在USER_TAB_COLUMNS中;通过USER_TABLES列将其与TABLE_NAME进行连接,例如

select *
from user_tables t join user_tab_columns c on t.table_name = c.table_name

您知道表名,您应该能够检查某些列是否存在。

如果您使用ALL_TABLES / ALL_TAB_COLUMNS,请同时包含OWNER值。

答案 1 :(得分:1)

您可以像这样修改现有查询:

C++:
CreateFileMappingW(L"MySharedMemory");

C#:
MemoryMappedFile.OpenExisting("MySharedMemory")

让我知道是否有帮助。

谢谢 Idrees

答案 2 :(得分:0)

要检查特定表中是否存在列,请使用:

  SELECT owner, table_name
  FROM all_tab_columns 
  WHERE UPPER(column_name) = UPPER(<your column _name>) and 
  TABLE_NAME=upper(<your table_name>);
相关问题