2011-05-25 92 views
0

我在查詢中聲明瞭一個遊標,並且希望使用同一張桌子上的另一個查詢重新定位該遊標,例如,在PostgreSQL中使用查詢來打開遊標中的位置

這是我的光標;

DECLARE mycursor CURSOR FOR SELECT * FROM mytable order by somedate;

這就是我想要去的位置:從MYTABLE 選擇ROWNUMBER(),其中name =「弗雷德」

使用ROWNUMBER()(或其他結構),我想在我打開的遊標定位。

我知道我可以使用Fetch/Move在我的光標內定位,但定位不是絕對的。

可以這樣做嗎?

回答

1

除非我讀你的問題錯了,你能做的最好的是這樣的:

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

如果您知道行號提前就可以直接跳轉到它與移動/取出;如果你不知道但想知道它,你可以在你抓取時使用它。

這就是說,請注意查詢本身會變慢。所以如果你已經知道你的行的位置,或者如果你不從應用程序轉移到你的應用程序中,那麼你就可以用limit/offet更好。