oracle 存储过程中如何用ROWID
这个问题相信大家都碰到过,因为在窗口里面我们使用ROWID是可以删除重复条件的,但搬到存储过程当中的话就报:无效的ROWID。这个是什么情况,像这样的情况如何去处理,我是...
这个问题相信大家都碰到过,因为在窗口里面我们使用ROWID是可以删除重复条件的,但搬到存储过程当中的话就报:无效的ROWID。 这个是什么情况,像这样的情况如何去处理,我是想通过存储过程删除重复的记录,所以使用了ROWID,有高手支招吗? 谢谢!
还有个问题就是:在一个表里有重复的记录,我如果在存储过程怎么批量的处理。( 按IN 传入的值我已经做到了一个人一个的人处理但这样慢,看哪位高手可以有个批量的处理方式) 展开
还有个问题就是:在一个表里有重复的记录,我如果在存储过程怎么批量的处理。( 按IN 传入的值我已经做到了一个人一个的人处理但这样慢,看哪位高手可以有个批量的处理方式) 展开
3个回答
展开全部
1 一般说来,ROWID不是普通的字符串,所以,在与字符比较或做其它运算的时候,需要做转换.
即: ROWIDTOCHAR (x.ROWID)
or CHARTOROWID(xxxxxxx)
这样转换过后,应当能解决你面临的问题.
2 剔重的过程一般要根据实际情况来做.
比如有完全相同的记录,有按条件相同的记录(不完全相同),有固定重复次数的情况,有不是固定重复次数的情况...根据不同的情况,可以采用相应的简便办法.
当然,你可以编制统一的剔重过程,就一劳永逸了.流程也很简单,按照你"关心"的条件进行排序,开游标去一条一条的取,第一条和第二条比,按条件相同,删除其中一条,比如删除第二条,那就还用第一条去和第三条比,..直到不同,再用这条不同的和它相临的下一条比,再比到不同....
如果是完全相同的情况..... 按全表所有字段分组,取每组最大或最小的....将此查询建立成新表即可..
即: ROWIDTOCHAR (x.ROWID)
or CHARTOROWID(xxxxxxx)
这样转换过后,应当能解决你面临的问题.
2 剔重的过程一般要根据实际情况来做.
比如有完全相同的记录,有按条件相同的记录(不完全相同),有固定重复次数的情况,有不是固定重复次数的情况...根据不同的情况,可以采用相应的简便办法.
当然,你可以编制统一的剔重过程,就一劳永逸了.流程也很简单,按照你"关心"的条件进行排序,开游标去一条一条的取,第一条和第二条比,按条件相同,删除其中一条,比如删除第二条,那就还用第一条去和第三条比,..直到不同,再用这条不同的和它相临的下一条比,再比到不同....
如果是完全相同的情况..... 按全表所有字段分组,取每组最大或最小的....将此查询建立成新表即可..
展开全部
select 表某列
from 表
group by 表某列
having count(1)》1,就可以看重复列了啊
能贴个伪代码吗
from 表
group by 表某列
having count(1)》1,就可以看重复列了啊
能贴个伪代码吗
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我在存储过程 没用过rowid 不太清楚。如果是那样的话换个方法 去删除重复被。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询