oracle代码的常见错误汇总

很多使用其他数据库的朋友在转到Oracle数据库的时候经常会犯一些习惯性的错误,本文汇总了一些常见的Oracle代码错误,供大家查询比对。

1. 插入语句写成:

insert into t1 values(...)

应为:

insert into t1(...) values(...)

2.

to_char(sysdate,'YYYYMMDDHHMMSS')

应改为:

to_char(sysdate,'YYYYMMDDHH24MISS')

3.

select count(*) into v_count from t1 where c1=?;

永远不会触发no_data_found错误,应该判断v_count=0

4.返回值问题:

合理的处理办法:
在过程的开始 result:=false;
在过程的结尾 result:=true;
中间不需要对result赋值。

不合理的处理办法:
在过程的开始 result:=true;
中间代码每一处判断不符合时需result:=false赋值。
在过程的结尾不需对result赋值

5.

select c1,c2 in from t1 where c3 = v_c3;
if v_c1 = 0 or v_c2 = 0 then

执行该代码找不到时会报错,不会返回0
应该用when no_data_found判断

6. 

'... where c1 = ' || v_c1;

c1字段为字符型,要加单引号,否则用不上c1索引,oracle内部转换成了'... where c1 = ' ||chr(39)|| to_char(v_c1)||chr(39);
改为:

where c1 = '||chr(39) ||v_c1||chr(39);

7.如果只判断是否存在数据,应加and rownum<2速度更快

select count(*)
into v_count
from t1
where c1 = v_c1;

应加条件:and rownum<2

8.

WHERE EXISTS (SELECT *
FROM t1

应为:

WHERE EXISTS (SELECT 'x'
FROM t1

9.

RAISE_APPLICATION_ERROR(-20000, infoMsg);

不要都用20000错误号
RAISE_APPLICATION_ERROR的可用错误号范围为-20000至-20999

(0)

相关推荐

  • Oracle AS关键字 提示错误

    今天运行程序时,在Oracle中输入SQL语句:select * from USERS as u ,程序报错 输入select * from USERS  u 可以正常的查询出结果. 但是在SQL Server 2005 中输入''select * from USERS as u''相同的语句就没有错,查了原因如下:SQL2规范允许关键字AS出现在表的名字和表的别名之间,虽然这使得FROM子句更容易被读懂,但是在特定的SQL产品中它可能还不被支持. 我想Oracle还不支持这样的语法.

  • Oracle常见错误代码的分析与解决

    正在看的ORACLE教程是:Oracle常见错误代码的分析与解决. 在使用ORACLE的过程过,我们会经常遇到一些ORACLE产生的错误,对于初学者而言,这些错误可能有点模糊,而且可能一时不知怎么去处理产生的这些错误,本人就使用中出现比较频繁的错误代码一一做出分析,希望能够帮助你找到一个合理解决这些错误的方法,同时也希望你能够提出你的不同看法.毕竟作为一种交流的手段,个人意见难免过于偏颇,而且也必定存在着不足,出错之处在所难免.写这篇文章的目的就是想通过相互之间的交流共同促进,共同进步. 产生原

  • Linux系统下导出ORACLE数据库出现Exporting questionable statistics.错误 处理

    环境:A机器和B机器都是LINUX系统,但由于B机器已经空间不足,所以停掉不停操作数据库的服务后 ,准备在A机器进行导出操作. 导出语句 exp user/password@sid file=0320.dmp 导出过程中不停出现Exporting questionable statistics.的错误. 上网一查,都说是字符集问题. 使用语句查看数据库的字符集. select *from nls_database_parameters t where t.parameter='NLS_CHARA

  • ORACLE常见错误代码的分析与解决三

    正在看的ORACLE教程是:ORACLE常见错误代码的分析与解决三. -------------------------------------------------------------------------------- p align="JUSTIFY">ORA-00600:internal error code,arguments:[num],[?],[?],[?],[?] 产生原因:这种错误通常为ORACLE的内部错误,只对OSS和ORACLE开发有用.ORA-6

  • 在oracle 数据库中查看一个sql语句的执行时间和SP2-0027错误

    进入sqlplus SQL> set timing on SQL> SQL> select count(*) from comm_human_role; COUNT(*) ---------- 866 Elapsed: 00:00:00.05 以上数字输出分别是:Hours:Minutes:Seconds.Milliseconds 即用了0.05秒的时间执行,相当于50毫秒. 时间如果是这样的表示:00: 03: 235.78 总共用的时间为235.78秒, 不到4分钟,所以显示的是3分

  • win7安装oracle10g 提示程序异常终止 发生未知错误

    oracle 10g 在win7下安装,选择高级选项,提示程序异常终止,发生未知错误 修改Oracle 10G\database\stage\prereq\db\refhost.xml 在 </SYSTEM> <CERTIFIED_SYSTEMS>后面添加 <!--Microsoft Windows 7--> <OPERATING_SYSTEM> <VERSION VALUE="6.1"/> </OPERATING_SY

  • plsql连接oracle数据库报ora 12154错误解决方法

    plsql连接oracle数据库报ora 12154错误 今天遇到一个问题,使用sqlplus能够连接到远程的数据库,但是使用plsql却连接不上,报错"ORA-12154: TNS: 无法解析指定的连接标识符" 解决方法如下: 1.先检查服务器端的监听服务是否打开,如果没有打开请启动其监听 客户端:tnsping <tns_name> 服务器Linux下: #>lsnrctl status 查看监听状态 #>lsnrctl start 启动监听 2.通过Sql

  • ORACLE常见错误代码的分析与解决二

    正在看的ORACLE教程是:ORACLE常见错误代码的分析与解决二. -------------------------------------------------------------------------------- p align="JUSTIFY">ORA-01578:Oracle data block corrupted(file # num,block # num) 产生原因:当ORACLE访问一个数据块时,由于1.硬件的I/O错误:2.操作系统的I/O错误

  • 安装Oracle加载数据库错误areasQueries的解决

    正在看的ORACLE教程是:安装Oracle加载数据库错误areasQueries的解决.注意:安装时要保证Oracle安装目录不能带有中文字符 (如果第一次安装出现"加载数据库错误areasQueries"的错误,一般是因为Oracle安装目录带有中文字符的目录) 1. 停止所有关于Oracle的服务 2. 删除Oracle安装目录,主要分布在两个地方(如D盘跟目录下面以及C盘Program Files下面),删除时提示无法删除的错误,重新启动机器重新删除就可以了 3. 删除注册表里

  • oracle 10g OEM常规错误(Unknown host specified)解决

    重装了笔记本上的oracle,安装完成后,可以正常使用OEM控制台,但是注销后重新登录或者重启系统后登录,或者笔记本使用网络环境发生了变化,都有可能遇到问题.这些遇到问题的解决办法使用过,但是很久没折腾就忘记了,今天把这些问题和解决方法记录在此. 1.网络环境变化导致无法启动 这个问题的现象是无法启动OEM.使用命令行如下: 复制代码 代码如下: C:/Users/Administrator>set ORACLE_SID=TEST C:/Users/Administrator>emctl st

  • oracle错误代码大全(超详细)

    ORA-00001: 违反唯一约束条件 (.) ORA-00017: 请求会话以设置跟踪事件 ORA-00018: 超出最大会话数 ORA-00019: 超出最大会话许可数 ORA-00020: 超出最大进程数 () ORA-00021: 会话附属于其它某些进程:无法转换会话 ORA-00022: 无效的会话 ID:访问被拒绝 ORA-00023: 会话引用进程私用内存:无法分离会话 ORA-00024: 单一进程模式下不允许从多个进程注册 ORA-00025: 无法分配 ORA-00026:

随机推荐