我在查询中声明了一个游标,并希望使用同一个表上的另一个查询在该打开的游标中重新定位,例如。
这是我的光标;
通过somedate DECLARE mycursor CURSOR FOR SELECT * FROM mytable order;
这是我想要达到的位置: 从mytable中选择ROWNUMBER(),其中name =“fred”
使用ROWNUMBER()(或其他一些构造)我想在我的开放光标中定位。
我知道我可以使用Fetch / Move在光标内定位,但定位不是绝对的。
可以这样做吗?
答案 0 :(得分:1)
除非我错误地阅读你的问题,否则你能做的最好就是:
DECLARE mycursor CURSOR FOR
SELECT *, rank() OVER (ORDER BY somedate) FROM mytable ORDER BY somedate;
如果您事先知道行号,可以使用move / fetch直接跳到它;如果您不想知道,可以在获取时使用它。
那就是说,请注意查询本身会更慢。如果您已经知道行的位置,那么您最好使用limit/offet
,或者如果不这样做,则可以根据应用计算行数。