Oracle随录

时间:2022-03-25 05:18:37

根据表名查询其相关的存储过程:select * from user_source s WHERE s.text LIKE ‘%tablename%‘;

查某个字段包含在哪些表里:select TABLE_NAME from SYS.USER_CONS_COLUMNS where COLUMN_NAME =‘EAC076‘;

 

1.ORA-01789:

查询块具有不正确的结果列数。

sql语句存在union,要保证两个语句查询的字段一致,大小写顺序也要保持一致才行。

 

2.ORA-00979

不是GROUP BY 表达式。

select列表项中出现的列必须全部出现在group by后面(聚合函数除外),大小写顺序最好一致。

 

3.union all 和 order by 连用的问题,如果查询的列是固定的,可以使用order by 1(按照查询出的第一个字段排序,默认升序asc)。另外如果写为order by 5  而只有4列,则报错。

 

4.decode函数用法一:比较大小(如果相等)

select decode(sign(100-90),-1,100,90) from dual;  --比较 小
select decode(sign(100-90),1,100,90) from dual;  --比较 大

 

5.ORA-00911

无效字符

字段类型没转换,一个number、一个varchar,转换一下就ok了。

 

6.ORA-00920

sql里的where查询条件有错误。

 

7.ORA-00905:缺失关键字

一般时是少表导致select查询内容或则和where子查询有错

 

8.四舍五入保留2,3,4位小数

select round(123.456, 2) from dual; select round(123.456, 3) from dual;  select round(123.456, 4) from dual;

 

9.金额转大写

Select Money2Chinese(0932402934024.213) From dual;

 

10.程序报无效的列索引(oracle)

调用存储过程的问号个数和提供的参数数量不一致,或者问号写成中文模式