oracle 捕获异常,不中断游标循环
2016-04-20 12:54
453 查看
2016-04-20
昨天晚上,在用全文索引匹配关键词列表,进行查询时,不断报错。oracle的全文索引对关键字有很多的限制,为了能够正常查询出数据,得找出有问题的关键词。因为关键词列表有3000多个,一个个去检查是否有语法错误不太现实,而且工作量也大,所以想到用存储过程去捕获查询时的异常,并在有异常的地方,把有问题的关键词输出。以下是用到的过程。
测试脚本跑完,找出了一个有问题的关键词,如下:
竖线|在oracle中代表字符串连接,在用全文索引进行模糊查询时,如果作为关键字,则缺失右表达式,所以不断报错。
因为刚接触过程不久,不太熟悉,这样一个小问题搞了我一个上午。这也算是我第一个跟业务相关的过程吧,在此纪念一下。
昨天晚上,在用全文索引匹配关键词列表,进行查询时,不断报错。oracle的全文索引对关键字有很多的限制,为了能够正常查询出数据,得找出有问题的关键词。因为关键词列表有3000多个,一个个去检查是否有语法错误不太现实,而且工作量也大,所以想到用存储过程去捕获查询时的异常,并在有异常的地方,把有问题的关键词输出。以下是用到的过程。
CREATE OR REPLACE PROCEDURE sp_etl_pc_tmp_ms_201504_10 as v_ms gather.tmp_ms_201504_10_test%ROWTYPE; TYPE cur_type is REF CURSOR; c_tab cur_type; v_sql varchar2(4000); v_str varchar2(250); v_startdate date; v_enddate date; BEGIN v_sql := 'select * from gather.web_action_basic a where contains(a.windows, :v1,0) > 0 and a.day_date between :v2 and :v3 '; v_startdate := to_date('2015-04-01', 'YYYY-MM-DD'); v_enddate := to_date('2015-04-02', 'YYYY-MM-DD'); FOR i IN (SELECT * FROM gather.keyword_ms_ap WHERE proj_name = 'Microsoft') LOOP BEGIN v_str := i.keywords; OPEN c_tab FOR v_sql USING v_str, v_startdate, v_enddate; LOOP FETCH c_tab INTO v_ms; EXIT WHEN c_tab%NOTFOUND; NULL; END LOOP; CLOSE c_tab; EXCEPTION WHEN others THEN dbms_output.put_line('keywords = ' || v_str); END; END LOOP; END;
测试脚本跑完,找出了一个有问题的关键词,如下:
竖线|在oracle中代表字符串连接,在用全文索引进行模糊查询时,如果作为关键字,则缺失右表达式,所以不断报错。
因为刚接触过程不久,不太熟悉,这样一个小问题搞了我一个上午。这也算是我第一个跟业务相关的过程吧,在此纪念一下。
相关文章推荐
- Oracle 删除重复的记录,只保留一条
- 【Oracle】ORA-27102:错误
- ORACLE schedule job设置
- mvc C# JavaScript LigerUI oracle实现用户的注册、登陆验证、登陆
- windows下dg备库连接需要设置ORACLE_SID
- oracle安装报错 /lib/i386/libawt.so:libXt.so.6:cannot open shared object file
- Oracle 记录类型介绍
- Oracle11gR2连接ArcGIS10.2.2配置问题
- Oracle存储过程详解(二)
- oracle分区表的测试
- Oracle&SQL数据库中返回错误代码和错误信息内置函数
- win10安装oracle 11g 时出现INS-13001环境不满足最低要求
- Oracle存储过程详解(一)
- 查看一些权限问题oracle(自己备忘)
- SpringJDBC调用oracle存储过程的方法
- ORACLE中package的用法
- Ubuntu Server 11.04 安装 Oracle 11g r2 图解教程
- [Form Builder]Oracle Form系统变量中文版总结大全
- Linux下安装Oracle11gR2 2
- Oracle SQL 内置函数大全()