Добавить в избранное   Сделать стартовой   Главная   E-mail   Форум   Мой блог 
   
Cертификации

Errors

ETL

FAQ (по темам)

GIS

Web

wiki

Администрирование

Безопасность

Книги
Oracle, ...

Новости

ОС

Программирование

Проектирование БД

Производительность

Скачать

Советы

Тестирование

Установка

FAQ - по базам данных
FAQ - по базам данных
Установка СУБД
Oracle
Sybase
MySQL
PostgreSQL
MS SQL Server
Interbase, Firebird
Другие DB
Администрирование
Oracle
MySQL
Sybase
PostgreSQL
MS SQL Server
Interbase, Firebird
IBM DB2
Другие DB
Проектирование БД
Статьи
ETL
Теория БД
ErWin
Designer 2000
PowerDesigner
Хранилища данных
CASE средства
OLAP
Бизнес - анализ (BI)
Производительность
Oracle
MSSQL
Interbase, Firebird
IBM DB2
MySQL
PostgreSQL
SYBASE
Безопасность БД
Oracle
MS SQL Server
Инъекция SQL
Программирование
Transact-SQL
PL/SQL
C++
XML
SQL
PostgreSQL
MDX
Java
VBA Excel
Книги по базам
Oracle
Заказ книг
ОС
Установка и настройка
UBUNTU
ОС
Установка и настройка
UBUNTU
FAQ
FAQ - по базам данных
Главная

Курсоры PL/SQL

Печать E-mail
Оглавление
Курсоры PL/SQL
Страница 2
Страница 3
Страница 4
Страница 5
 
   Курсор - это указатель на зарезервированный участок памяти в SGA, где обрабатывается SQL (SELECT) или DML (UPDATE/INSERT/DELETE) предложение.

SGA (Системная Глобальная Область) большой участок оперативной памяти, зарезервированный операционной системой, который используется для работы Oracle. В SGA (между прочим) находятся разделяемый пул (shared memory pool) и пул частной памяти (private memory pool), где выполняются PL/SQL-программы. Когда ваш код скомпилирован и загружен в память для выполнения, определение курсора загружается в разделяемый пул: текст курсора и разобранный код. Под термином "совместно используемый" подразумевается то, что только одна копия существует в памяти и означает, если Вы и Я оба вводят один и тот же идентичный запрос (запросы совпадают по-символьно), мы используем уже разобранный курсор. Oracle знает, что ваш курсор и мой - идентичны при сравнении текстовой версии курсора. И в этом случае Oracle может использовать тот курсор, который уже в памяти.

   Когда Я выполняю свой курсор, информация, необходимая для обработки, сохраняется в пуле частной памяти. В этом случае Oracle позволяет многократное использование одного и того же курсора.

 

 

 

РИС.1. Типы Курсоров

Существует три основных типов курсоров:

* Неявный,

* Явный и

* Курсорные циклы FOR.

Неявные Курсоры

Неявный курсор управляется автоматически, прозрачно для Вас. В процессе выполнения, курсор открывается, из него выбираются данные и закрывается, все за один шаг.Неявные курсоры используются только в том случае, если надо возвратить единственную строку из таблицы.

 

SELECT addr1, addr2, city, state, zip5

INTO v_addr1, v_addr2, v_city, v_state, v_zip5

FROM addresses

WHERE ... -- извлечь по уникальному ключу

-- (exact match on unique key)

 

Если неявный курсор должен возвратить более, чем одну строку, срабатывает исключение (TOO_MANY_ROWS). Дело в том, что Вы можете выбирать (SELECT INTO) только в скалярные переменные (имеющие только единственное значение).

Если неявный курсор вообще не возвращает строк, срабатывает исключение (NO_DATA_FOUND).

Всегда используйте неявный курсор вместе с его своим собственным обработчиком исключений.

Типичные исключения, которые могут возникать при работе с курсором:

 

Exception Name ORACLE Error SQLCODE Value

----------------------------------------------------------

CURSOR_ALREADY_OPEN ORA-06511 -6511

DUP_VAL_ON_INDEX ORA-00001 -1

INVALID_CURSOR ORA-01001 -1001

INVALID_NUMBER ORA-01722 -1722

LOGIN_DENIED ORA-01017 -1017

NO_DATA_FOUND ORA-01403 +100

NOT_LOGGED_ON ORA-01012 -1012

PROGRAM_ERROR ORA-06501 -6501

STORAGE_ERROR ORA-06500 -6500

TIMEOUT_ON_RESOURCE ORA-00051 -51

TOO_MANY_ROWS ORA-01422 -1422

TRANSACTION_BACKED_OUT ORA-00061 -61

VALUE_ERROR ORA-06502 -6502

ZERO_DIVIDE OAR-01476 -1476

 

Если объявлена переменная типа record, поля которой точно совпадают с данными, запрашиваемыми в операторе SELECT, то можно использовать конструкцию SELECT INTO.


 
 
« Пред.   След. »
Взаимосвязанные статьи
     

Последние добавленные статьи
Поиск
Ссылки
Главная
Скачать
Курсы
Роль АБД (SYSDBA)
Карта сайта
Автостекла
Контакты
Войти на сайт
Популярные статьи
Online - тесты
1Z0-042
Rambler's Top100 МЕТА - Украина. Рейтинг сайтов хостинг от freehost.com.ua

Все права защищены.SYSDBA 2010 | Если у Вас есть хороший материал пришлите его нам.