使用 PostgreSQL 中的查询在打开的游标中定位
我在查询上声明了一个游标,并希望使用同一个表上的另一个查询在该打开的游标中重新定位,例如
这是我的游标;
DECLARE mycursor CURSOR FOR SELECT * FROM mytable order by somedate;
这就是我想要达到的位置: select ROWNUMBER() from mytable where name = "fred"
使用 ROWNUMBER() (或其他构造)我想在打开的光标中定位。
我知道我可以使用“获取/移动”在光标内定位,但定位不是绝对的。
这可以做到吗?
I have a cursor declared on a query and want to re-position within that open cursor using another query on the same table, e.g.
Here is my cursor;
DECLARE mycursor CURSOR FOR SELECT * FROM mytable order by somedate;
This is the position I want to get to:
select ROWNUMBER() from mytable where name = "fred"
Using ROWNUMBER() (or some other construct) I want to position in my open cursor.
I know I can use Fetch/Move to position within my cursor but the positioning is not absolute.
Can this be done?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
除非我读错了你的问题,否则你能做的最好的事情就是:
如果你提前知道行号,你可以通过 move/fetch 直接跳到它;如果您不知道但想知道它,您可以使用 as you fetch 来访问它。
也就是说,请注意查询本身会变慢。因此,如果您已经知道行的位置,那么最好使用
limit/offet
;如果您不知道,则最好在离开应用程序时计算行数。Unless I'm reading your question wrong, the best you can do is this:
If you know the row number in advance you can jump straight to it with move/fetch; and if you don't but want to know it, you can access it using as you fetch.
That said, note that the query itself will be slower. So you'll be better off with a
limit/offet
if you already know the position of your row, or counting the rows as you go from your app if you don't.