使用PostgreSQL中的查询在打开的游标中定位

时间:2011-05-25 10:26:54

标签: postgresql cursor

我在查询中声明了一个游标,并希望使用同一个表上的另一个查询在该打开的游标中重新定位,例如。

这是我的光标;

通过somedate DECLARE mycursor CURSOR FOR SELECT * FROM mytable order;

这是我想要达到的位置:   从mytable中选择ROWNUMBER(),其中name =“fred”

使用ROWNUMBER()(或其他一些构造)我想在我的开放光标中定位。

我知道我可以使用Fetch / Move在光标内定位,但定位不是绝对的。

可以这样做吗?

1 个答案:

答案 0 :(得分:1)

除非我错误地阅读你的问题,否则你能做的最好就是:

DECLARE mycursor CURSOR FOR
SELECT *, rank() OVER (ORDER BY somedate) FROM mytable ORDER BY somedate;

如果您事先知道行号,可以使用move / fetch直接跳到它;如果您不想知道,可以在获取时使用它。

那就是说,请注意查询本身会更慢。如果您已经知道行的位置,那么您最好使用limit/offet,或者如果不这样做,则可以根据应用计算行数。