Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PostgreSQL中的查询在打开的游标中定位_Postgresql_Cursor - Fatal编程技术网

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

使用PostgreSQL中的查询在打开的游标中定位,postgresql,cursor,Postgresql,Cursor,我在一个查询上声明了一个游标,并希望使用同一表上的另一个查询在该打开的游标中重新定位,例如 这是我的光标 按somedate为从mytable order中选择*声明mycursor游标 这是我想要得到的职位: 从mytable中选择ROWNUMBER(),其中name=“fred” 使用ROWNUMBER()(或其他一些构造),我想在打开的光标中定位 我知道我可以使用Fetch/Move在光标内定位,但定位不是绝对的 这可以做到吗?除非我看错了你的问题,否则你最好这样做: DECLARE my

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

这是我的光标

按somedate为从mytable order中选择*声明mycursor游标

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

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

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


这可以做到吗?

除非我看错了你的问题,否则你最好这样做:

DECLARE mycursor CURSOR FOR
SELECT *, rank() OVER (ORDER BY somedate) FROM mytable ORDER BY somedate;
如果您事先知道行号,您可以使用move/fetch直接跳到行号;如果您不想知道,但想知道,您可以在获取时使用访问它

也就是说,请注意,查询本身会变慢。因此,如果您已经知道行的位置,那么最好使用
限制/offet
,如果您不知道,则在应用程序中计算行数