sql語句判斷表字段是否存在

1.SQLserver

var sql = @"if not exists(select * from syscolumns where id=object_id('" + tableName + @"') and name='" + fieldName + @"') 
                        begin
                            alter table " + tableName + @"  add  " + fieldName + @"  " + fieldType + @"
                        end";
            try
            {
                var dc = new DbContext();
                int ret = dc.Database.ExecuteSqlCommand(sql, "");

                Log("執行添加字段sql:" + ret + "\r\n" + sql);
            }
            catch (Exception ex)
            {
                Log("執行添加字段sql error:" + ex + "\r\n" + sql);
            }

 

 

2.oracle

begin
if (select count(1) from ALL_TAB_COLUMNS where owner='YourOwner' and table_name=upper('YourTableName')   and column_name=upper('YourFieldName'))=0
then
    select getdate() from dual/*execute immediate 'alter table 表名 add 字段名 VARCHAR2(64)'*/;
else
select 1 /*execute immediate 'alter table 表名  modify 字段名  VARCHAR2(50);'*/;
end if; 
end;

 

declare i integer;
begin
select count(*) into i from ALL_TAB_COLUMNS where owner='YourOwner' and table_name=upper('YourTableName')   and column_name=upper('YourTableField');
if i=0 then
 execute immediate 'select getdate()/*alter table 表名 add 字段名 VARCHAR2(64)*/';

else
select 1/*execute immediate 'alter table 表名 modify 字段名 VARCHAR2(50);'*/;

end if;

end;

 oracle一些系統表:

--查表名是否存在
SELECT * FROM ALL_objects WHERE OBJECT_TYPE='Table' and OBJECT_NAME = 'YourTableName'

--查表字段
select * from ALL_TAB_COLUMNS where owner='YourOwner' and table_name=upper('YourTableName') and column_name=upper('YourField'); 

--查ddl create語句
select dbms_metadata.get_ddl('TABLE','YourTableName','YourOwner') from dual;

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章