SQL @@CURSOR_ROWS 函数
SQL的 @@CURSOR_ROWS 函数用于确定当前光标中的行数。如果我们在过程中使用一个或多个光标,这是非常有帮助的。需要注意的是,这个函数是非确定性的。因此,我们必须将这些函数与其他推理一起使用,以决定程序应该如何进行。
@@CURSOR_ROWS()函数返回最近打开的光标对象的行计数或当前状态。它返回一个整数值,表示行数或表格中显示的任何其他值。
序号 | 返回值和描述 |
---|---|
1 | -m 表示键集和游标中当前的行数是异步填充的。 |
2 | -1 使用动态游标。符合游标条件的行数始终在更改,因为动态游标反映了所有变化。游标不一定始终检索到所有符合条件的行。 |
3 | 0 表示最近打开的游标已关闭、已释放或未打开游标或没有符合条件的行。 |
3 | 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)
);
现在,让我们使用下面的查询语句向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 |
+------------------------------------+
示例
让我们看一下下面的查询,我们将在其中检索总编号。通过使用下面的查询来获取table worker中存在的行 −
DECLARE Work CURSOR FOR
SELECT TOP 10 Name, age FROM Workers;
SELECT @@CURSOR_ROWS AS 'Total Rows/Status';
输出
执行上述查询,输出如下所示 −
+------------------------------------+
| TotalRows/Status|
+------------------------------------+
| 6 |
+------------------------------------+