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;