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
广告