📜  fetch 关键字 oracle - SQL (1)

📅  最后修改于: 2023-12-03 15:00:44.693000             🧑  作者: Mango

Fetch 关键字 Oracle - SQL

FETCH 语句被用来从一个游标中获取数据行。游标必须在执行 OPEN 语句时已经被定义并打开,可以是显式或隐式。

语法如下:

FETCH cursor_name INTO variable_name [, variable_name];

其中,cursor_name 是游标的名称, variable_name 是接收游标数据的变量名。可以有多个 variable_name,用逗号隔开。

举个例子

以下是一个使用 FETCH 语句的示例:

DECLARE
    cursor emp_cursor IS SELECT * FROM employees;
    my_emp employees%ROWTYPE;
BEGIN
    OPEN emp_cursor;
    FETCH emp_cursor INTO my_emp;
    CLOSE emp_cursor;
END;

在上述代码中,我们定义了一个名为 emp_cursor 的游标,它从 employees 表中获取所有行。我们然后使用一行 SELECT 语句来把所有数据行选择到该游标. 接下来,我们打开游标(使用 OPEN 语句),然后从游标中获取一行数据(使用 FETCH 语句),并把该行数据存储在 my_emp 中。

最后,我们用 CLOSE 语句关闭游标。

FETCH 的使用

FETCH 通过将下一行数据从游标传送到给定变量,可以方便地从活动游标中提取数据。每个 FETCH 语句后,游标向前移动一行数据,直到游标的末端。

FETCH 的类型

FETCH有两种类型,分别是 INTOBULK COLLECT INTO

  • 使用 INTO 获取一行数据。如果游标返回了多余一行的数据,则返回一个 TOO_MANY_ROWS 异常。
  • 使用 BULK COLLECT INTO 获取多行数据。它使用一次 FETCH 获取多行数据,然后把这些数据全部保存到一个 PL/SQL 表中。执行时,FETCH 语句从游标中取一批数据,并把这些数据逐一放置到绑定变量表的数组中。 最终,绑定变量表里的所有数据都将被传给数组。
注意事项

由于游标常常与循环结合使用,所以使用 FETCH 时要格外小心影响复杂的查询性能已经占用服务器资源,所以在使用时请注意查询量及服务器压力。

参考文献:Oracle FETCH