oracle 存储过程中如何用ROWID

这个问题相信大家都碰到过,因为在窗口里面我们使用ROWID是可以删除重复条件的,但搬到存储过程当中的话就报:无效的ROWID。这个是什么情况,像这样的情况如何去处理,我是... 这个问题相信大家都碰到过,因为在窗口里面我们使用ROWID是可以删除重复条件的,但搬到存储过程当中的话就报:无效的ROWID。 这个是什么情况,像这样的情况如何去处理,我是想通过存储过程删除重复的记录,所以使用了ROWID,有高手支招吗? 谢谢!
还有个问题就是:在一个表里有重复的记录,我如果在存储过程怎么批量的处理。( 按IN 传入的值我已经做到了一个人一个的人处理但这样慢,看哪位高手可以有个批量的处理方式)
展开
 我来答
yangzh_851
2010-07-29 · TA获得超过892个赞
知道小有建树答主
回答量:120
采纳率:66%
帮助的人:68.9万
展开全部
1 一般说来,ROWID不是普通的字符串,所以,在与字符比较或做其它运算的时候,需要做转换.
即: ROWIDTOCHAR (x.ROWID)
or CHARTOROWID(xxxxxxx)
这样转换过后,应当能解决你面临的问题.

2 剔重的过程一般要根据实际情况来做.
比如有完全相同的记录,有按条件相同的记录(不完全相同),有固定重复次数的情况,有不是固定重复次数的情况...根据不同的情况,可以采用相应的简便办法.
当然,你可以编制统一的剔重过程,就一劳永逸了.流程也很简单,按照你"关心"的条件进行排序,开游标去一条一条的取,第一条和第二条比,按条件相同,删除其中一条,比如删除第二条,那就还用第一条去和第三条比,..直到不同,再用这条不同的和它相临的下一条比,再比到不同....
如果是完全相同的情况..... 按全表所有字段分组,取每组最大或最小的....将此查询建立成新表即可..
zhousqing
2010-07-27 · TA获得超过827个赞
知道小有建树答主
回答量:963
采纳率:0%
帮助的人:472万
展开全部
select 表某列
from 表
group by 表某列
having count(1)》1,就可以看重复列了啊

能贴个伪代码吗
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
戎云英0K9
2010-07-28
知道答主
回答量:7
采纳率:0%
帮助的人:5.7万
展开全部
我在存储过程 没用过rowid 不太清楚。如果是那样的话换个方法 去删除重复被。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式