当前位置: 代码迷 >> Oracle管理 >> 数据查询 游标的应用和instr
  详细解决方案

数据查询 游标的应用和instr

热度:10   发布时间:2016-04-24 05:11:39.0
数据查询 游标的使用和instr
有两个表:
表一:tableA
num id yesorno
1 1,5,8
2 2,5,9
3 4,22
4 3,5,-9
5 2,4,3,6  
表二:TABLEB
id2
1
2
3
4
5
6
7
8
9

要求:若tableA的id都不能能在tableB中找到,则标志yesorno为‘y',否则为’n‘ 如1,5,8都能在在tableB中找到,则标为’n'

------解决方案--------------------
可以不用游标都可以,两条Update语句就OK了
SQL code
CREATE TABLE tableA(num NUMBER(5),id VARCHAR2(50),yesorno VARCHAR2(1));INSERT INTO tablea(num,id) VALUES(1,'1,5,8');INSERT INTO tablea(num,id) VALUES(2,'2,5,9');INSERT INTO tablea(num,id) VALUES(3,'4,22');INSERT INTO tablea(num,id) VALUES(4,'3,5,-9');INSERT INTO tablea(num,id) VALUES(5,'2,4,3,6');INSERT INTO tablea(num,id) VALUES(5,'2,4,3,6');INSERT INTO tablea(num,id) VALUES(6,'10,20');        CREATE TABLE tableb(id2 number(2));INSERT INTO tableb VALUES(1);INSERT INTO tableb VALUES(2);INSERT INTO tableb VALUES(3);INSERT INTO tableb VALUES(4);INSERT INTO tableb VALUES(5);INSERT INTO tableb VALUES(6);INSERT INTO tableb VALUES(7);INSERT INTO tableb VALUES(8);INSERT INTO tableb VALUES(9);UPDATE tablea SET yesorno='y' WHERE   NOT EXISTS (SELECT 1 FROM TABLEb WHERE InStr(','||tablea.id||',',','||tableb.id2||',')>0);UPDATE TABLEa SET yesorno='n' WHERE yesorno IS NULL;
------解决方案--------------------
探讨
我拿去具体的表格运行了,结果出错了。。。