SQL CURSOR_STATUS() 函数

一、SQL CURSOR_STATUS() 函数

CURSOR_STATUS() 函数用于确定当前光标的状态。在调用光标之前,应用程序可以使用该函数来检查其状态。特别是在使用应用程序时使用一个或多个光标。必须牢记此函数的非确定性性质。因此,结果可能会根据情况而变化。

CURSOR_STATUS() 函数以下列smallint值返回:

返回值光标名称光标变量
1光标结果至少有一行。分配给此变量的光标是打开的。
0光标结果集为空。分配给此变量的光标是打开的,但结果肯定为空。
-1光标已关闭。分配给此变量的光标已关闭。
-2无适用。以前调用的过程未将光标分配给此输出变量。
-3指定的名称的光标不存在。分配给此变量的光标不存在,或者存在但尚未为其分配光标。

二、语法

SQL CURSOR_STATUS()函数的语法如下:

CURSOR_STATUS   
   (  
      { 'local' , 'cursor_name' }   
      | { 'global' , 'cursor_name' }   
      | { 'variable' , 'cursor_variable' }   
   )

参数:

  • local - 指示游标源是一个本地游标名称。
  • cursor_name - 指示游标名称必须符合数据库标识符规则。
  • global - 指示游标源是一个全局游标名称。
  • variable - 指示游标源是一个本地变量。
  • cursor_variable - 指示游标的nme,并使用th来定义。

示例1:

让我们使用以下查询创建一个名为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 |
+----+----------+-----+-----------+---------+

示例2:

在下面的例子中,我们将为上面创建的Workers表创建游标,并使用以下查询来获取状态:

DECLARE work CURSOR  FOR 
SELECT AGE,ADDRESS FROM Workers
SELECT CURSOR_STATUS ('global','work') AS 'After declare'

当我们执行上述查询时,输出结果如下:

+---------------+
| After declare |
+---------------+
|           -1  |
+---------------+

示例3:

让我们看下面的示例,我们将打开游标并使用以下查询获取其状态:

OPEN work
SELECT CURSOR_STATUS('global','work') AS 'After Open'

当我们执行上述查询时,输出结果如下:

+------------------------------------+
|                         After Open |
+------------------------------------+
|                                 1  |
+------------------------------------+

示例4:

让我们来看一下另一个查询,在这个查询中,我们将关闭查询并通过以下查询检查状态:

CLOSE work
SELECT CURSOR_STATUS('global','work') AS 'After Close'

执行上述查询后,输出显示如下:

+------------------------------------+
|                        After Close |
+------------------------------------+
|                                 -1 |
+------------------------------------+

示例5:

让我们看一下以下查询,在这个查询中,我们将执行fetch_status并通过以下查询读取游标变量中的所有行:

SELECT CURSOR_STATUS('global','work') AS 'isValid?'

执行上述查询后,输出如下所示:

+-------------------+ 
|         isValid?  |
+-------------------+
|              -1   |
+-------------------+

示例6:

让我们看下面的查询,我们将使用以下查询来解除分配游标:

DEALLOCATE work

执行上述查询后,输出如下所示:

Commands completed successfully.
—— 完 ——
相关推荐
评论

立 为 非 似

中 谁 昨 此

宵 风 夜 星

。 露 , 辰

文章点击榜

细 无 轻 自

如 边 似 在

愁 丝 梦 飞

。 雨 , 花