# Oracle 常用语法常见报错
Posted MarlonBrando1998
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了# Oracle 常用语法常见报错相关的知识,希望对你有一定的参考价值。
Oracle 常用语法
封闭符
- 双引号作为封闭符
- 数据库中字段默认为大写,如果需要小写,在建表
DDL
中用双引号进行修饰
单条插入自增主键
- 批量插入估计也可以使用此方法
<insert id="insert" parameterType="map" >
<selectKey keyProperty="id" resultType="int" order="BEFORE">
select nvl(max(id),0)+1 from test
</selectKey>
insert into test(ID,MEMBER_ID) values(#{id},#{memberId})
</insert>
批量插入没有自增操作
<insert id="insertbatch">
insert into test(column1,column2,column3)
<foreach collection="list" item="item" separator="union all">
(select
to_char(
nvl(
<choose>
<when test="item.column1 !=null">#{item.column1}</when>
<otherwise>null</otherwise>
</choose>
,null)
),
to_char(
nvl(
<choose>
<when test="item.column2 !=null">#{item.column2}</when>
<otherwise>null</otherwise>
</choose>
,null)
),
to_char(
nvl(
<choose>
<when test="item.column3 !=null">#{item.column3}</when>
<otherwise>null</otherwise>
</choose>
,null)
)
from dual)
</foreach>
</insert>
批量插入含有自增主键
- 新建一个序列获取自增序号:
CREATE SEQUENCE TEST_SEQUENCE INCREMENT BY 1 MINVALUE 1 MAXVALUE 9999999999999999999999999999 NOCYCLE NOCACHE NOORDER ;
- 批量插入
<insert id="insertBatch">
insert into table(ID,COLUMN1,RECORDTIME)
select TEST_SEQUENCE.NEXTVAL ID,m.COLUMN1,to_date(m.RECORDTIME,'yyyy-mm-dd hh24:mi:ss') from (
<foreach collection ="list" item ="item" index ="index" separator ="union all" >
select
to_char(
nvl(<choose><when test="item.column1 !=null">#{item.column1}</when><otherwise>null</otherwise></choose>,null)) COLUMN1,
nvl(<choose><when test="item.recordtime !=null">#{item.recordtime}</when><otherwise>null</otherwise></choose>,null) RECORDTIME from dual
</foreach>
) m
</insert>insert>
limit 语法
select * from test where rownum =1;
类似于group_concat的函数
- 使用
wm_concat
Oracle 查询不大小写区分
转为小写 LOWER('ABC') 结果 abc
转为大写 UPPER('aBc') 结果 ABC
dual表的用途
dual
是一个虚拟表,用来构成select
的语法规则- 例如:
SELECT 'zhangsan' AS name,13 AS age FROM dual
Oracle 常见错误
SQL 错误 [979] [42000]: ORA-00979: 不是 GROUP BY 表达式
- 错误描述:
group by
语句后面的字段和列中的字段应该匹配 - 解决方式:使用
distinct
代替groupby
查询
SQL 错误 [923] [42000]: ORA-00923: 未找到要求的 FROM 关键字
- 错误描述:缺少
from
表的内容 - 解决方式:
SELECT 'zhangsan' AS name,13 AS age FROM dual
使用dual
虚拟表
SQL 错误 [904] [42000]: ORA-00904: “type”: 标识符无效
-
错误描述:
select
的列和数据库表中字段不一致,注意大小写,特殊字符加上双引号 -
解决方式:
select "TYPE" from 表名;
以上是关于# Oracle 常用语法常见报错的主要内容,如果未能解决你的问题,请参考以下文章