视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
oracle代码常见错误
2020-11-09 13:42:37 责编:小采
文档


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

  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

  7. WHERE EXISTS (SELECT *

  FROM t1

  应为:

  WHERE EXISTS (SELECT 'x'

  FROM t1

  8. RAISE_APPLICATION_ERROR(-20000, infoMsg);不要都用20000错误号

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

下载本文
显示全文
专题