Поясните смысл использования курсорной инструкции fetch напишите простой синтаксис этой инструкции

В этом учебном материале вы узнаете, как использовать оператор FETCH в Oracle/PLSQL c синтаксисом и примерами.

Описание

Цель использования курсора, в большинстве случаев, это получение строк из курсора таким образом, чтобы некоторый тип операций мог быть выполнен на данных. После объявления и открытия курсора, следующим шагом является выборка строк из курсора с помощью оператора FETCH.

Синтаксис

FETCH имя_курсора INTO variable_list;

Параметры или аргументы
имя_курсора наименование курсора, из которого вы хотите извлечь строки.
variable_list список переменных, разделенных запятыми, в которые вы хотите сохранить результирующий набор курсора.

Пример

Определим курсор таким образом.

CURSOR c1

IS

   SELECT course_number

   FROM courses_tbl

   WHERE course_name = name_in;

Команда, которая будет использоваться для выборки данных из этого курсор:

FETCH c1 into cnumber;

Эта команда выберет первое course_number в переменную cnumber.
Далее функция, которая показывает, как использовать оператор FETCH.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

CREATE OR REPLACE Function FindCourse

   ( name_in IN varchar2 )

   RETURN number

IS

   cnumber number;

   CURSOR c1

   IS

     SELECT course_number

     FROM courses_tbl

     WHERE course_name = name_in;

BEGIN

   OPEN c1;

   FETCH c1 INTO cnumber;

   if c1%notfound then

      cnumber := 9999;

   end if;

   CLOSE c1;

RETURN cnumber;

END;

FETCH is an SQL command used along with ORDER BY clause with an OFFSET(Starting point) to retrieve or fetch selected rows sequentially using a cursor that moves and processes each row one at a time till the number of rows mentioned in the query are displayed.

  • With FETCH the OFFSET clause is mandatory. You are not allowed to use, ORDER BY … FETCH.
  • You are not allowed to combine TOP with OFFSET and FETCH.
  • The OFFSET/FETCH row count expression can only be any arithmetic, constant, or parameter expression which will return an integer value.
  • With the OFFSET and FETCH clause, the ORDER BY is mandatory to be used. 

Syntax:

SELECT *

FROM table_name

ORDER BY col_name

OFFSET starting point

FETCH NEXT k(constant) ROWS ONLY;

Steps to implement FETCH:

Here, we will discuss the steps to implement the FETCH command in SQL. 

Step 1: Reference table: 

Let us consider a table is created based on marks of students in the class that contains data displayed below.

ID NAME MATHEMATICS PHYSICS CHEMISTRY
 501 Surya 99  97 85
502 Sravan 91  98 94
503 Charan 99  93 88
504 Ram 92  99 92
505 Aryan 94  99  88
506 Sathwik 91  88 91
507 Madhav 90  97 89

Step 2: Creating a database:

CREATE DATABASE gfg;

Step 3: Using the database:

USE gfg;

Step 4: Creating a table:

Creating table MarketList with 5 columns using the following SQL query:

CREATE TABLE MarkList
(
    id int,
    name varchar(20),
    mathematics int, 
    physics int,
    chemistry int
);

Step 5: Inserting the data into the table:

INSERT INTO MarkList VALUES(501,'Surya',99,97,85);
INSERT INTO MarkList VALUES(502,'Charan',99,93,88);
INSERT INTO MarkList VALUES(503,'Sravan',91,98,94);
INSERT INTO MarkList VALUES(504,'Ram',92,99,82);
INSERT INTO MarkList VALUES(505,'Aryan',94,99,88);
INSERT INTO MarkList VALUES(506,'Sathwik',91,88,91);
INSERT INTO MarkList VALUES(507,'Madhav',90,97,89);

Step 6: After inserting, the table will look like this.

Step 7: Now fetching the data using the fetch command: 

To retrieve the names, id and total marks of the top 3 students, the fetch command is used as follows:

SELECT Id, name, mathematics+physics+chemistry AS total
FROM MarketList
ORDER BY mathematics+physics+chemistry DESC
OFFSET 0 ROWS
FETCH NEXT 3 ROWS ONLY;

So, the SQL FETCH command is used to retrieve selected rows from a table sequentially. It’s handy to use when you want to select a limited number of rows from an ordered set, like top 3, top 10, or bottom 3, etc.

Last Updated :
19 May, 2021

Like Article

Save Article

FETCH-получение строк из запроса с помощью курсора

Synopsis

FETCH [ direction ] [ FROM | IN ] cursor_name

where direction can
be one of:

    NEXT
    PRIOR
    FIRST
    LAST
    ABSOLUTE count
    RELATIVE count
    count
    ALL
    FORWARD
    FORWARD count
    FORWARD ALL
    BACKWARD
    BACKWARD count
    BACKWARD ALL

Description

FETCH извлекает строки с помощью ранее созданного курсора.

У курсора есть связанная позиция, которая используется FETCH . Положение курсора может быть перед первой строкой результата запроса, в любой конкретной строке результата или после последней строки результата. При создании курсор располагается перед первой строкой. После получения нескольких строк курсор устанавливается на строку, полученную последней. Если FETCH запускается за конец доступных строк, то курсор остается после последней строки или перед первой строкой, если выполняется выборка назад. FETCH ALL или FETCH BACKWARD ALL всегда будет оставлять курсор после последней строки или перед первой строкой.

Формы NEXT , PRIOR уровень , FIRST , LAST , ABSOLUTE , RELATIVE принести одну строку после перемещения курсора соответствующим образом . Если такой строки нет, возвращается пустой результат, а курсор остается перед первой строкой или после последней строки, в зависимости от ситуации.

Формы, использующие FORWARD и BACKWARD , извлекают указанное количество строк, перемещающихся в прямом или обратном направлении, оставляя курсор на последней возвращенной строке (или после / перед всеми строками, если count превышает количество доступных строк).

RELATIVE 0 , FORWARD 0 и BACKWARD 0 — все запросы, выбирающие текущую строку без перемещения курсора, то есть повторную выборку самой последней выбранной строки. Это будет успешным, если курсор не будет находиться перед первой строкой или после последней строки; в этом случае строка не возвращается.

Note

На этой странице описывается использование курсоров на уровне команд SQL. Если вы пытаетесь использовать курсоры внутри функции PL/pgSQL, правила другие — см. Раздел 43.7.3 .

Parameters

direction

direction определяет направление выборки и количество строк для выборки. Это может быть одно из следующих значений:

NEXT

Выбрать следующую строку. Это значение по умолчанию, если direction не указано .

PRIOR

Принесите предыдущий ряд.

FIRST

Получите первую строку запроса (то же самое, что и ABSOLUTE 1 ).

LAST

Получить последнюю строку запроса (то же самое, что и ABSOLUTE -1 ).

ABSOLUTE count

Извлечь строку count запроса или строку abs(count) с конца, если count отрицательное. Позиционировать перед первой строкой или после последней строки, если count вне допустимого диапазона; в частности, ABSOLUTE 0 позиций перед первой строкой.

RELATIVE count

Извлекает count ‘последующий ряд — й, или abs(count) -й строки , если предшествующий count является отрицательным. RELATIVE 0 повторно выбирает текущую строку, если таковая имеется.

count

Извлечь следующие строки count (так же, как FORWARD count ).

ALL

Получить все оставшиеся строки (как FORWARD ALL ).

FORWARD

Выбрать следующую строку (как NEXT ).

FORWARD count

Получите следующие строки count . FORWARD 0 повторно выбирает текущую строку.

FORWARD ALL

Соберите все оставшиеся ряды.

BACKWARD

Получить предыдущую строку (то же, что и PRIOR ).

BACKWARD count

Получить предыдущие строки count (сканирование назад). BACKWARD 0 повторно выбирает текущую строку.

BACKWARD ALL

Возьмите все предыдущие ряды (сканирование в обратном направлении).

count

count — это, возможно, целочисленная константа со знаком, определяющая местоположение или количество строк для выборки. Для случаев FORWARD и BACKWARD указание отрицательного count эквивалентно изменению смысла FORWARD и BACKWARD .

cursor_name

Имя открытого курсора.

Outputs

При успешном завершении команда FETCH возвращает тег команды в форме

FETCH count

count это количество выбранных строк (возможно , ноль). Обратите внимание, что в psql тег команды фактически не отображается, поскольку вместо этого psql отображает выбранные строки.

Notes

Курсор должен быть объявлен с опцией SCROLL , если кто-то намеревается использовать любые варианты FETCH , кроме FETCH NEXT или FETCH FORWARD с положительным счетчиком. Для простых запросов PostgreSQL разрешит обратную выборку из курсоров, не объявленных с помощью SCROLL , но на такое поведение лучше не полагаться. Если курсор объявлен с NO SCROLL , обратная выборка не разрешена.

ABSOLUTE выборка не быстрее, чем переход к желаемой строке с относительным перемещением: базовая реализация в любом случае должна пройти все промежуточные строки. Отрицательные абсолютные выборки еще хуже: запрос нужно прочитать до конца, чтобы найти последнюю строку, а затем пройти оттуда в обратном направлении. Однако возврат к началу запроса (как и в случае FETCH ABSOLUTE 0 ) выполняется быстро.

DECLARE используется для определения курсора. Используйте MOVE , чтобы изменить положение курсора без извлечения данных.

Examples

Следующий пример пересекает таблицу с помощью курсора:

BEGIN WORK;


DECLARE liahona SCROLL CURSOR FOR SELECT * FROM films;


FETCH FORWARD 5 FROM liahona;

 code  |          title          | did | date_prod  |   kind   |  len

 BL101 | The Third Man           | 101 | 1949-12-23 | Drama    | 01:44
 BL102 | The African Queen       | 101 | 1951-08-11 | Romantic | 01:43
 JL201 | Une Femme est une Femme | 102 | 1961-03-12 | Romantic | 01:25
 P_301 | Vertigo                 | 103 | 1958-11-14 | Action   | 02:08
 P_302 | Becket                  | 103 | 1964-02-03 | Drama    | 02:28


FETCH PRIOR FROM liahona;

 code  |  title  | did | date_prod  |  kind  |  len

 P_301 | Vertigo | 103 | 1958-11-14 | Action | 02:08


CLOSE liahona;
COMMIT WORK;

Compatibility

Стандарт SQL определяет FETCH для использования только во встроенном SQL. Описанный здесь вариант FETCH возвращает данные, как если бы это был результат SELECT , а не помещал их в переменные хоста. Помимо этого пункта, FETCH полностью совместим со стандартом SQL.

В FETCH формы с участием FORWARD и BACKWARD , а также формы FETCH count и FETCH ALL , в котором FORWARD подразумевается, являются расширениями PostgreSQL.

Стандарт SQL допускает только FROM перед именем курсора; возможность использовать IN или вообще исключить их — это расширение.


PostgreSQL

15.0

  • Note

    Возможность указать как агрегатную функцию DISTINCT,так и агрегатную функцию ORDER BY Расширение PostgreSQL.

  • 4.2.9.Литые заготовки

    Приведение типа определяет преобразование одних данных в другие.

  • GRANT

    GRANT определяет привилегии доступа Команда GRANT имеет два основных варианта:один предоставляет привилегии объекту базы данных (таблице,столбцу,представлению,внешней последовательности),

  • СХЕМА ИМПОРТА ЗАРУБЕЖНЫХ ТОВАРОВ

    Определения таблиц IMPORT FOREIGN SCHEMA с сервера IMPORT FOREIGN SCHEMA создает таблицы,которые представляют существующие на сервере.

Summary: in this tutorial, you will learn how to use the Oracle FETCH clause to limit the rows returned by a query.

Introduction to Oracle FETCH clause

Some RDBMS such as MySQL and PostgreSQL have the LIMIT clause that allows you to retrieve a portion of rows generated by a query.

See the following products and inventories tables in the sample database.

products and inventories tables

Step 7: Now fetching the data using the fetch command: 

To retrieve the names, id and total marks of the top 3 students, the fetch command is used as follows:

SELECT Id, name, mathematics+physics+chemistry AS total
FROM MarketList
ORDER BY mathematics+physics+chemistry DESC
OFFSET 0 ROWS
FETCH NEXT 3 ROWS ONLY;

So, the SQL FETCH command is used to retrieve selected rows from a table sequentially. It’s handy to use when you want to select a limited number of rows from an ordered set, like top 3, top 10, or bottom 3, etc.

Last Updated :
19 May, 2021

Like Article

Save Article

FETCH-получение строк из запроса с помощью курсора

Synopsis

FETCH [ direction ] [ FROM | IN ] cursor_name

where direction can
be one of:

    NEXT
    PRIOR
    FIRST
    LAST
    ABSOLUTE count
    RELATIVE count
    count
    ALL
    FORWARD
    FORWARD count
    FORWARD ALL
    BACKWARD
    BACKWARD count
    BACKWARD ALL

Description

FETCH извлекает строки с помощью ранее созданного курсора.

У курсора есть связанная позиция, которая используется FETCH . Положение курсора может быть перед первой строкой результата запроса, в любой конкретной строке результата или после последней строки результата. При создании курсор располагается перед первой строкой. После получения нескольких строк курсор устанавливается на строку, полученную последней. Если FETCH запускается за конец доступных строк, то курсор остается после последней строки или перед первой строкой, если выполняется выборка назад. FETCH ALL или FETCH BACKWARD ALL всегда будет оставлять курсор после последней строки или перед первой строкой.

Формы NEXT , PRIOR уровень , FIRST , LAST , ABSOLUTE , RELATIVE принести одну строку после перемещения курсора соответствующим образом . Если такой строки нет, возвращается пустой результат, а курсор остается перед первой строкой или после последней строки, в зависимости от ситуации.

Формы, использующие FORWARD и BACKWARD , извлекают указанное количество строк, перемещающихся в прямом или обратном направлении, оставляя курсор на последней возвращенной строке (или после / перед всеми строками, если count превышает количество доступных строк).

RELATIVE 0 , FORWARD 0 и BACKWARD 0 — все запросы, выбирающие текущую строку без перемещения курсора, то есть повторную выборку самой последней выбранной строки. Это будет успешным, если курсор не будет находиться перед первой строкой или после последней строки; в этом случае строка не возвращается.

Note

На этой странице описывается использование курсоров на уровне команд SQL. Если вы пытаетесь использовать курсоры внутри функции PL/pgSQL, правила другие — см. Раздел 43.7.3 .

Parameters

direction

direction определяет направление выборки и количество строк для выборки. Это может быть одно из следующих значений:

NEXT

Выбрать следующую строку. Это значение по умолчанию, если direction не указано .

PRIOR

Принесите предыдущий ряд.

FIRST

Получите первую строку запроса (то же самое, что и ABSOLUTE 1 ).

LAST

Получить последнюю строку запроса (то же самое, что и ABSOLUTE -1 ).

ABSOLUTE count

Извлечь строку count запроса или строку abs(count) с конца, если count отрицательное. Позиционировать перед первой строкой или после последней строки, если count вне допустимого диапазона; в частности, ABSOLUTE 0 позиций перед первой строкой.

RELATIVE count

Извлекает count ‘последующий ряд — й, или abs(count) -й строки , если предшествующий count является отрицательным. RELATIVE 0 повторно выбирает текущую строку, если таковая имеется.

count

Извлечь следующие строки count (так же, как FORWARD count ).

ALL

Получить все оставшиеся строки (как FORWARD ALL ).

FORWARD

Выбрать следующую строку (как NEXT ).

FORWARD count

Получите следующие строки count . FORWARD 0 повторно выбирает текущую строку.

FORWARD ALL

Соберите все оставшиеся ряды.

BACKWARD

Получить предыдущую строку (то же, что и PRIOR ).

BACKWARD count

Получить предыдущие строки count (сканирование назад). BACKWARD 0 повторно выбирает текущую строку.

BACKWARD ALL

Возьмите все предыдущие ряды (сканирование в обратном направлении).

count

count — это, возможно, целочисленная константа со знаком, определяющая местоположение или количество строк для выборки. Для случаев FORWARD и BACKWARD указание отрицательного count эквивалентно изменению смысла FORWARD и BACKWARD .

cursor_name

Имя открытого курсора.

Outputs

При успешном завершении команда FETCH возвращает тег команды в форме

FETCH count

count это количество выбранных строк (возможно , ноль). Обратите внимание, что в psql тег команды фактически не отображается, поскольку вместо этого psql отображает выбранные строки.

Notes

Курсор должен быть объявлен с опцией SCROLL , если кто-то намеревается использовать любые варианты FETCH , кроме FETCH NEXT или FETCH FORWARD с положительным счетчиком. Для простых запросов PostgreSQL разрешит обратную выборку из курсоров, не объявленных с помощью SCROLL , но на такое поведение лучше не полагаться. Если курсор объявлен с NO SCROLL , обратная выборка не разрешена.

ABSOLUTE выборка не быстрее, чем переход к желаемой строке с относительным перемещением: базовая реализация в любом случае должна пройти все промежуточные строки. Отрицательные абсолютные выборки еще хуже: запрос нужно прочитать до конца, чтобы найти последнюю строку, а затем пройти оттуда в обратном направлении. Однако возврат к началу запроса (как и в случае FETCH ABSOLUTE 0 ) выполняется быстро.

DECLARE используется для определения курсора. Используйте MOVE , чтобы изменить положение курсора без извлечения данных.

Examples

Следующий пример пересекает таблицу с помощью курсора:

BEGIN WORK;


DECLARE liahona SCROLL CURSOR FOR SELECT * FROM films;


FETCH FORWARD 5 FROM liahona;

 code  |          title          | did | date_prod  |   kind   |  len

 BL101 | The Third Man           | 101 | 1949-12-23 | Drama    | 01:44
 BL102 | The African Queen       | 101 | 1951-08-11 | Romantic | 01:43
 JL201 | Une Femme est une Femme | 102 | 1961-03-12 | Romantic | 01:25
 P_301 | Vertigo                 | 103 | 1958-11-14 | Action   | 02:08
 P_302 | Becket                  | 103 | 1964-02-03 | Drama    | 02:28


FETCH PRIOR FROM liahona;

 code  |  title  | did | date_prod  |  kind  |  len

 P_301 | Vertigo | 103 | 1958-11-14 | Action | 02:08


CLOSE liahona;
COMMIT WORK;

Compatibility

Стандарт SQL определяет FETCH для использования только во встроенном SQL. Описанный здесь вариант FETCH возвращает данные, как если бы это был результат SELECT , а не помещал их в переменные хоста. Помимо этого пункта, FETCH полностью совместим со стандартом SQL.

В FETCH формы с участием FORWARD и BACKWARD , а также формы FETCH count и FETCH ALL , в котором FORWARD подразумевается, являются расширениями PostgreSQL.

Стандарт SQL допускает только FROM перед именем курсора; возможность использовать IN или вообще исключить их — это расширение.


PostgreSQL

15.0

  • Note

    Возможность указать как агрегатную функцию DISTINCT,так и агрегатную функцию ORDER BY Расширение PostgreSQL.

  • 4.2.9.Литые заготовки

    Приведение типа определяет преобразование одних данных в другие.

  • GRANT

    GRANT определяет привилегии доступа Команда GRANT имеет два основных варианта:один предоставляет привилегии объекту базы данных (таблице,столбцу,представлению,внешней последовательности),

  • СХЕМА ИМПОРТА ЗАРУБЕЖНЫХ ТОВАРОВ

    Определения таблиц IMPORT FOREIGN SCHEMA с сервера IMPORT FOREIGN SCHEMA создает таблицы,которые представляют существующие на сервере.

Summary: in this tutorial, you will learn how to use the Oracle FETCH clause to limit the rows returned by a query.

Introduction to Oracle FETCH clause

Some RDBMS such as MySQL and PostgreSQL have the LIMIT clause that allows you to retrieve a portion of rows generated by a query.

See the following products and inventories tables in the sample database.

The following query uses the LIMIT clause to get the top 5 products with the highest inventory level:

SELECT
	product_name,
	quantity
FROM
	inventories
INNER JOIN products
		USING(product_id)
ORDER BY
	quantity DESC 
LIMIT 5;Code language: SQL (Structured Query Language) (sql)

In this example, the ORDER BY clause sorts the products by stock quantity in descending order and the LIMIT clause returns only the first 5 products with the highest stock quantity.

Oracle Database does not have the LIMIT clause. However, since 12c release, it provided a similar but more flexible clause named row limiting clause.

By using the row limiting clause, you can rewrite the query that uses the LIMIT clause above as follows:

SELECT
    product_name,
    quantity
FROM
    inventories
INNER JOIN products
        USING(product_id)
ORDER BY
    quantity DESC 
FETCH NEXT 5 ROWS ONLY;
Code language: SQL (Structured Query Language) (sql)

Oracle FETCH - top 5 products with highest inventory level

In this statement, the row limiting clause is:

FETCH NEXT 5 ROWS ONLY
Code language: SQL (Structured Query Language) (sql)

Similar to the statement that uses LIMIT clause above, the row limiting clause returns the top 5 products with the highest inventory level.

Oracle FETCH clause syntax

The following illustrates the syntax of the row limiting clause:

[ OFFSET offset ROWS]
 FETCH  NEXT [  row_count | percent PERCENT  ] ROWS  [ ONLY | WITH TIES ] 
Code language: SQL (Structured Query Language) (sql)

 OFFSET clause

The OFFSET clause specifies the number of rows to skip before the row limiting starts. The OFFSET clause is optional. If you skip it, then offset is 0 and row limiting starts with the first row.

The offset must be a number or an expression that evaluates to a number. The offset is subjected to the following rules:

  • If the offset is negative, then it is treated as 0.
  • If the offset is NULL or greater than the number of rows returned by the query, then no row is returned.
  • If the offset includes a fraction, then the fractional portion is truncated.

 FETCH clause

The FETCH clause specifies the number of rows or percentage of rows to return.

For the semantic clarity purpose, you can use the keyword ROW instead of ROWS, FIRST instead of  NEXT. For example, the following clauses behavior the same:

FETCH NEXT 1 ROWS
FETCH FIRST 1 ROW
Code language: SQL (Structured Query Language) (sql)

 ONLY | WITH TIES

The ONLY returns exactly the number of rows or percentage of rows after FETCH NEXT (or FIRST).

The WITH TIES returns additional rows with the same sort key as the last row fetched. Note that if you use WITH TIES, you must specify an ORDER BY clause in the query. If you don’t, the query will not return the additional rows.

Oracle FETCH clause examples

A) Top N rows example

The following statement returns the top 10 products with the highest inventory level:

SELECT
    product_name,
    quantity
FROM
    inventories
INNER JOIN products
        USING(product_id)
ORDER BY
    quantity DESC 
FETCH NEXT 10 ROWS ONLY;
Code language: SQL (Structured Query Language) (sql)

Oracle FETCH - top 10 products with highest inventory level

B) WITH TIES example

The following query uses the row limiting clause with the WITH TIES option:

SELECT
	product_name,
	quantity
FROM
	inventories
INNER JOIN products
		USING(product_id)
ORDER BY
	quantity DESC 
FETCH NEXT 10 ROWS WITH TIES;Code language: SQL (Structured Query Language) (sql)

Oracle FETCH WITH TIES example

Even though the query requested 10 rows, because it had the WITH TIES option, the query returned two more additional rows. Notice that these two additional rows have the same value in the quantity column as the row 10.

C) Limit by percentage of rows example

The following query returns top 5% products with the highest inventory level:

SELECT
    product_name,
    quantity
FROM
    inventories
INNER JOIN products
        USING(product_id)
ORDER BY
    quantity DESC 
FETCH FIRST 5 PERCENT ROWS ONLY;
Code language: SQL (Structured Query Language) (sql)

Oracle FETCH - Percentage of rows example

The inventories table has 1112 rows, therefore, 5% of 1112 is 55.6 which is rounded up to 56 (rows).

D) OFFSET example

The following query skips the first 10 products with the highest level of inventory and returns the next 10 ones:

SELECT
	product_name,
	quantity
FROM
	inventories
INNER JOIN products
		USING(product_id)
ORDER BY
	quantity DESC 
OFFSET 10 ROWS 
FETCH NEXT 10 ROWS ONLY;Code language: SQL (Structured Query Language) (sql)

Oracle FETCH OFFSET example

In this tutorial, you have learned how to use the Oracle FETCH clause to limit rows returned by a query.

Was this tutorial helpful?

totn Oracle / PLSQL


This Oracle tutorial explains how to use the Oracle/PLSQL FETCH statement with syntax and examples.

Description

The purpose of using a cursor, in most cases, is to retrieve the rows from your cursor so that some type of operation can be performed on the data. After declaring and opening your cursor, the next step is to use the FETCH statement to fetch rows from your cursor.

Syntax

The syntax for the FETCH statement in Oracle/PLSQL is:

FETCH cursor_name INTO variable_list;

Parameters or Arguments

cursor_name
The name of the cursor that you wish to fetch rows.
variable_list
The list of variables, comma delimited, that you wish to store the cursor result set in.

Example

For example, you could have a cursor defined as:

CURSOR c1
IS
   SELECT course_number
   FROM courses_tbl
   WHERE course_name = name_in;

The command that would be used to fetch the data from this cursor is:

FETCH c1 into cnumber;

This would fetch the first course_number into the variable called cnumber.

Below is a function that demonstrates how to use the FETCH statement.

CREATE OR REPLACE Function FindCourse
   ( name_in IN varchar2 )
   RETURN number
IS
   cnumber number;

   CURSOR c1
   IS
     SELECT course_number
     FROM courses_tbl
     WHERE course_name = name_in;

BEGIN

   OPEN c1;
   FETCH c1 INTO cnumber;

   if c1%notfound then
      cnumber := 9999;
   end if;

   CLOSE c1;

RETURN cnumber;

END;

Понравилась статья? Поделить с друзьями:

Новое и полезное:

  • Поясните основное содержание должностной инструкции работника службы доу
  • Пояснения 5 к балансу инструкция по заполнению
  • Пояснения 5 дебиторская и кредиторская задолженность инструкция по заполнению
  • Пояс тяньши инструкция по применению
  • Пояс турмалиновый с магнитами инструкция по применению цена

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии