2016-12-19 90 views
0

我需要知道oracle遊標的記錄數(過程的輸出參數)。計算oracle遊標中的記錄數

遊標在Oracle包的主體上聲明並且是一個IS REF CURSOR類型;

在程序2(相同的程序包)中,我調用程序1並獲取輸出光標。

我需要循環這個輸出光標並計算記錄數量。我已經測試了很多示例,但是,任何示例都適用。

感謝,

+1

請顯示一些相關的代碼。 「select count(*)...」有什麼不對? – OldProgrammer

+4

要計算遊標記錄的數量,您需要讀取(獲取)該遊標的所有記錄。遊標就像java中的一個文件(流) - 你必須讀整個文件才能知道這個文件的一些行。 – krokodilko

回答

3

這是不可能得到光標的計數,而遍歷它。光標就像指向數據而不是數據本身的指針。所以如果你需要計算你必須做循環,直到cursor%notfound。也有一些是像cursor%ROWCOUNTdocumentation說:

可以附加到一個遊標或遊標變量名稱的光標屬性。當遊標打開時,%ROWCOUNT被清零。在第一次獲取之前,cursor_name%ROWCOUNT返回0.此後,它返回到目前爲止獲取的行數。如果最新的讀取返回一行,則數字會增加。

所以只得到計數方式是既可以執行select count(*) from --the same condition as in cursor或遍歷光標(獲取所有數據),然後檢查%rowcount或只是增加每一個光標記錄變量但可能是最快的辦法就是批量讀取從光標中的所有記錄並使用%rowcount