【常见SQL报错及解决办法】个人记录,自用

SELECT查询相关

ORA-00942: 表或视图不存在

  • 现象:明明已经新建了视图,并提交了,直接查询的时候还是报了这个错

  • 解决:视图名那加双引号,与建立的时候保持一致

--SELECT * FROM VIEW_NAME  报错,需要加双引号
SELECT * FROM "VIEW_NAME"
  • 原因:Oracle对大小写敏感,通常在创建和查询时对名称数据库会自动转为大写,但语句中有引号时会按引号中的内容保留;权限问题,当前schema没有该表、视图的访问权限。

建表

分区相关

范围分区语法格式参考:

CREATE TABLE schemaname.tablename
AS
(	
	columnname1 datatype,
	columnname2 datatype
)
PARTITION BY RANGE (按哪列分区的列名)
(
	PARTITION 分区名1 VALUES LESS THAN (条件)PARTITION 分区名2 VALUES LESS THAN (条件)
)

问题SQL

CREATE TABLE "SPF"."SUM_INPUT_WO" 
   (	
   		"OPERATION_ID" VARCHAR2(64) NOT NULL ENABLE, 
		"OPERATION_DESC" VARCHAR2(64) NOT NULL ENABLE, 
		"DATE" VARCHAR2(64), 
		"DFT_CODE" VARCHAR2(64) 
		"INTERFACE_TIME" DATE, 
		"HOUR_TIMEKEY" VARCHAR2(80)
   )
PARTITION BY RANGE ("DATE")(
 PARTITION PART_202402 VALUES LESS THAN ('2024/03/01') TABLESPACE S_COM_DAT  OVERFLOW TABLESPACE S_COM_DAT
,PARTITION PART_202403 VALUES LESS THAN ('2024/04/01') TABLESPACE S_COM_DAT  OVERFLOW TABLESPACE S_COM_DAT
--PARTITION PART_202402 VALUES LESS THAN (to_char('20240301','YYYY/MM/DD')) TABLESPACE S_COM_DAT  OVERFLOW TABLESPACE S_COM_DAT
) 

报错:ORA-14020: 不能指定表分区的此物理属性
原因:建表时未指定TABLESPACE,删除后就成功了。

  • 最开始,对分区的范围用了to_char(‘20240301’,‘YYYY/MM/DD’),本身string再去to_char就有问题,低级错误,这个时候的报错是:ORA-14019: 分区界限元素必须是一个: 字符串, 日期时间或间隔文字, 数字或 MAXVALUE
  • 然后以为是用了关键字DATE导致没法对这一列进行分区,但关键字已经用引号引起来了,应该不至于有影响,试着删了后边的table space提示执行成功

同义词synonym

部分schema建public同义词提示权限不足,可以找DBA执行以下SQL:

grant create public synonym to schemaname

同义词参考语法

CREATE PUBLIC SYNONYM 同义词名 for schema.表名;

这样就可以用同义词名查出该表了(由于是public的,其它视图用同义词名也可以查出来)

时间相关

ORA-01839: 指定月份的日期无效

2023年12月31日运行

SELECT to_char(sysdate-INTERVAL '1' MONTH,'yyyymmdd') FROM dual

报错在这里插入图片描述

ORA-01873: 间隔的前导精度太小

2023年12月31日运行

SELECT to_char(sysdate-INTERVAL '180' day,'yyyymmdd') FROM dual

在这里插入图片描述
改为

SELECT to_char(sysdate- 180,'yyyymmdd') FROM dual

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java开发中经常会遇到各种报错,以下是一些常见报错及其解决办法: 1. NullPointerException(空指针异常) 这个异常通常是因为代码中使用了一个空的对象引用,解决方法是检查代码中是否有空的对象引用,或者在使用对象引用之前先进行判空操作。 2. ClassNotFoundException(找不到类异常) 这个异常通常是因为代码中使用了一个不存在的类,解决方法是检查类路径是否正确,或者是否缺少了相应的jar包。 3. NoSuchMethodException(找不到方法异常) 这个异常通常是因为代码中使用了一个不存在的方法解决方法是检查方法名是否正确,或者是否传递了正确的参数。 4. ArrayIndexOutOfBoundsException(数组下标越界异常) 这个异常通常是因为代码中使用了一个不存在的数组下标,解决方法是检查数组下标是否越界,或者是否在使用数组之前先进行了初始化。 5. SQLException(SQL异常) 这个异常通常是因为代码中使用了不正确的SQL语句或参数,解决方法是检查SQL语句是否正确,或者是否传递了正确的参数。 6. IOException(输入输出异常) 这个异常通常是因为代码中使用了不正确的输入输出操作,解决方法是检查输入输出操作是否正确,或者是否在使用输入输出之前先进行了初始化。 以上是一些常见的Java报错及其解决方法,当然还有其他的报错类型,需要开发人员自己不断学习和积累经验来解决

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值