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

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

  

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

  

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

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

  

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

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

  SQL Server写法:

  

  

SQL Server与Oracle对表添加列的不同点
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 ;
SQL Server与Oracle对表添加列的不同点


  

   说明:RCMSBASEINFO  表名

      EmpJobStatus     插入的列名

  Oracle写法:

 

SQL Server与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;
SQL Server与Oracle对表添加列的不同点


 

   说明:RCMSBASEINFO  表名

      EmpJobStatus     插入的列名

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

SQL Server与Oracle对表添加列的不同点,布布扣,bubuko.com

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

上一篇:oracle数据库元数据SQL查询


下一篇:MySql 之-error记