逛了博客园两年有余,不知道该发表些什么。要么觉得自己太菜,要么觉得要发的内容都可以搜索到,发表了还颇有抄袭味道。想想后都不得了之了。
搞了开发快一年了,有时候零零碎碎的东西需要整理一下,梳理后才能做到游刃有余!权且当作学习笔记吧!
都说客户屎尿一堆,开发时还是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的优越性!反正被搞的心烦意乱,看来都是企业与顾客之间忽悠来忽悠去的结果!