扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
oracle的if语句采用decode函数。
创新互联公司是一家专注于成都网站设计、成都网站建设与策划设计,旬阳网站建设哪家好?创新互联公司做网站,专注于网站建设十多年,网设计领域的专业建站公司;建站业务涵盖:旬阳等地区。旬阳做网站价格咨询:18980820575
DECODE(value,if1,then1,if2,then2,if3,then3,...,else)
表示如果value 等于if1时,DECODE函数的结果返回then1,...,如果不等于任何一个if值,则返回else
示例:
比如,有个if语句如下
if(a==1){//如果a等于1,返回2,否则返回3
return 2;
}else{
return 3;
}
翻译成DECODE如下
DECODE(a,1,2,3)
嵌套一个select语句在values这里,把你要插入的一整列语句用一根select语句查询出来,再赋值给values里面的值。
按位置对应一下,batch在段在倒数第二位,所以那个地方直接引用序列。
Oracle 常用SQL语法和数据对象,字符串类型的字段值超过定义的长度会出错,最好在插入前进行长度校验。
日期字段的字段值可以用当前数据库的系统时间SYSDATE精确到秒。
INSERT时最大可操作的字符串长度小于等于4000个单字节,方法借用ORACLE里自带的DBMS_LOB程序包。
查询语句差不多的
select * from 表名--最基础的查询与SQL Server一样
(ORACLE) SELECT a.*, b.* from a(+) = b就是一个右连接,等同于select a.*, b.* from a right join b (ORACLE与SQL Server)
(ORACLE) SELECT a.*, b.* from a = b(+)就是一个左连接,等同于select a.*, b.* from a left join b (Oracle 与SQL Server)
记得加条件
Oracle不能再建表语句中实现自增的,需要借助sequence才能实现,,设置主键只需要在字段后面加primary key关键字即可
create table servicelogs(
id number(8) primary key,
servicetype varchar(100),
outsys varchar(100),
methodname varchar(100),
methodresult varchar(200),
errormessage varchar(900),
inparameter varchar(900),
returncontent varchar(900),
logtime varchar(20)
);
创建序列号:
create sequence servicelogs_sequence
increment by 1 --步长,每次增加几
start with 1 --从几开始,这里是1
nomaxvalue --不设置最大值
nocycle --一直累加,不循环
nocache; --不建缓冲区
当然到此也可以结束,每次调用手动调用(序列名称.nextcal),但是这样比较麻烦,还是建立一个触发器
create or replace trigger servicelogs_trig before
insert on servicelogs for each row
begin
select servicelogs.nextval into new.id from dual;
end;
测试:
insert into servicelogs(servicetype)values('aaab');
select * from servicelogs;
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流