SQL Server与Oracle对表添加列的不同点

  逛了博客园两年有余,不知道该发表些什么。要么觉得自己太菜,要么觉得要发的内容都可以搜索到,发表了还颇有抄袭味道。想想后都不得了之了。

  

  搞了开发快一年了,有时候零零碎碎的东西需要整理一下,梳理后才能做到游刃有余!权且当作学习笔记吧!

  

  都说客户屎尿一堆,开发时还是SQL Server,做了一半接到通知,改成Oracle了!于是乎,有些SQL语句貌似需要重新捣鼓一下!

  于是乎,对以前写的SQL进行重新整理了一下,以便能正确执行!。。。

  

  需求:向一张表中添加一列

  为了体现语句的可重复执行,那么必须先要检测当前需要插入的列是否存在,存在则提示,不存在则添加列:

  SQL Server写法:

  

  

1 IF  EXISTS (
2       SELECT   O.NAME AS RCMSBASEINFO,C.NAME AS EmpJobStatus
3       FROM SYSOBJECTS O INNER JOIN SYSCOLUMNS C ON O.ID=C.ID 
4       WHERE O.NAME= 'RCMSBASEINFO' AND C.NAME   = 'EmpJobStatus'
5   )
6     PRINT N'已存在' ; 
7   ELSE 
8     ALTER TABLE RCMSBASEINFO ADD  [EmpJobStatus] [nvarchar](40) NULL ;

  

  说明:RCMSBASEINFO 表名

      EmpJobStatus 插入的列名

  Oracle写法:

 1 declare  cnt number; 
 2 BEGIN
 3   select count(column_name) into cnt 
 4   from cols 
 5   where table_name=upper('RCMSBASEINFO') and column_name=upper('EmpJobStatus');
 6   IF cnt < 1 THEN
 7     EXECUTE IMMEDIATE 'alter table RCMSBASEINFO add EmpJobStatus NVARCHAR2(40)';
 8   ELSE
 9     dbms_output.put_line('字段已经存在不能添加'); 
10   END IF;
11 END;

   说明:RCMSBASEINFO 表名

      EmpJobStatus 插入的列名

  以前开发一直用的SQL,初次用Oracle,觉得Oracle繁琐了不少,完全没有觉得体现出Oracle的优越性!反正被搞的心烦意乱,看来都是企业与顾客之间忽悠来忽悠去的结果!