SQL - @@CURSOR_ROWS



SQL 的@@CURSOR_ROWS函式用於確定當前遊標中的行數。如果我們在過程中使用一個或多個遊標,這將非常有用。重要的是要記住,此函式是非確定性的。因此,我們必須將這些函式與其他推理一起使用,以決定程式應如何繼續。

@@CURSOR_ROWS() 函式返回最近開啟的遊標物件的行數或當前狀態。它返回一個整數型別的行數或下表中顯示的任何其他值。

序號 返回值和描述
1

-m

這表示當前鍵集中的行數,並且遊標是非同步填充的。

2

-1

使用動態遊標。由於動態遊標反映所有更改,因此符合遊標條件的行數始終在變化。遊標並不總是檢索所有符合條件的行。

3

0

這表示最後一個開啟的遊標已關閉或已釋放,或者沒有開啟遊標,或者沒有行符合條件。

4

n

這表示遊標中的總行數,並且遊標已完全填充。

語法

以下是 SQL @@CURSOR_ROWS() 函式的語法:

@@CURSOR_ROWS

引數

它不接受任何引數。

示例

讓我們建立一個名為 Workers 的表,我們將在下面的示例中使用它,使用以下查詢:

CREATE TABLE Workers(
   ID   INT              NOT NULL,
   NAME VARCHAR (20)     NOT NULL,
   AGE  INT              NOT NULL,
   ADDRESS  CHAR (25) ,
   SALARY   DECIMAL (18, 2),       
   PRIMARY KEY (ID)
);

現在,讓我們使用以下查詢中所示的 INSERT 語句在 Workers 表中插入一些記錄:

INSERT INTO Workers VALUES (1, 'Ramesh', 32, 'Ahmedabad', 2000.00 );
INSERT INTO Workers VALUES (2, 'Khilan', 25, 'Delhi', 1500.00 );
INSERT INTO Workers VALUES (3, 'kaushik', 23, 'Kota', 2000.00 );
INSERT INTO Workers VALUES (4, 'Chaitali', 25, 'Mumbai', 6500.00 );
INSERT INTO Workers VALUES (5, 'Hardik', 27, 'Bhopal', 8500.00 );
INSERT INTO Workers VALUES (6, 'Komal', 22, 'MP', 4500.00 );

驗證

讓我們使用以下查詢檢查表是否已成功建立:

SELECT * FROM Workers;

輸出

執行上述查詢後,它將生成如下所示的輸出:

+----+----------+-----+-----------+---------+
| ID | NAME     | AGE | ADDRESS   | SALARY  |
+----+----------+-----+-----------+---------+
|  1 | Ramesh   |  32 | Ahmedabad | 2000.00 |
|  2 | Khilan   |  25 | Delhi     | 1500.00 |
|  3 | kaushik  |  23 | Kota      | 2000.00 |
|  4 | Chaitali |  25 | Mumbai    | 6500.00 |
|  5 | Hardik   |  27 | Bhopal    | 8500.00 |
|  6 | Komal    |  22 | MP        | 4500.00 |
+----+----------+-----+-----------+---------+

示例

在下面的示例中,我們將使用以下查詢在名為 Workers 的表中建立和執行遊標:

DECLARE Work CURSOR FOR 
SELECT Name FROM workers 
OPEN Work
FETCH NEXT FROM Work

輸出

當我們執行上述查詢時,將獲得如下輸出:

+--------------+
|                               Name |
+------------------------------------+
|                             Ramesh |
+------------------------------------+

示例

讓我們來看另一種情況,我們將關閉遊標並釋放它,並使用以下查詢檢查結果:

SELECT @@CURSOR_ROWS
CLOSE Work
DEALLOCATE Work

輸出

當我們執行上述查詢時,將獲得如下輸出:

+------------------------------------+
|                              Result|
+------------------------------------+
|                                -1  |
+------------------------------------+

示例

讓我們看一下下面的查詢,我們將選擇 @@CURSOR_ROWS,結果它返回 'o' 值,因為遊標未開啟:

SELECT @@CURSOR_ROWS;

輸出

執行上述查詢後,將顯示如下輸出:

+------------------------------------+
|                              Result|
+------------------------------------+
|                                  0 |
+------------------------------------+

示例

讓我們看一下下面的查詢,我們將使用以下查詢檢索 Workers 表中存在的總行數:

DECLARE Work CURSOR FOR
SELECT TOP 10 Name, age FROM Workers;
SELECT @@CURSOR_ROWS AS 'Total Rows/Status';

輸出

執行上述查詢後,將顯示如下輸出:

+------------------------------------+
|                    TotalRows/Status|
+------------------------------------+
|                                  6 |
+------------------------------------+
sql-cursor-functions.htm
廣告
© . All rights reserved.