Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Вопрос по курсору  [new]
Chazaddum
Member

Откуда: Харьков, Украина
Сообщений: 26
Здравствуйте, может мой вопрос покажется простым, я не могу найти объяснения в поисковике.
в пакете описан некий курсор,
cursor c_curname is
select field1,field2
from table1
where field1 = 'qwerty';

в начале процедуры происходит обращение к курсору посредством
for s_curname in c_curname loop

Здесь делаются некие проверки, сравнения, условия, и, вызывается внешняя процедура из пакета Table1 для изменения определенных полей этой таблицы (той таблицы, по которой был построен курсор c_curname) и коммитятся изменения.

вопрос в следующем: если я делаю коммит внутри цикла по курсору из таблицы, в которую постю изменения - курсор не слетает, и соответственно цикл нормально выходит, по достижению последнего айтема (строки) в курсоре, либо курсор изза любого коммита по table1 - сбрасывается и выбивает из цикла? Или, если сказать проще: Как ведет себя курсор, если с таблицей, по которой он построен происходят изменения? Спасибо
end loop ;

З.Ы. Извините за нубский вопрос, не смог для гугле более понятнее сформулировать запрос, чтобы получить ответ.
10 окт 14, 01:14    [16684798]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по курсору  [new]
Да ну
Member

Откуда: Первопрестольная
Сообщений: 242
Chazaddum,

Из Oracle® Database Concepts - Data Concurrency and Consistency

Statement-Level Read Consistency

Oracle Database always enforces statement-level read consistency, which guarantees that data returned by a single query is committed and consistent with respect to a single point in time. The point in time to which a single SQL statement is consistent depends on the transaction isolation level and the nature of the query:

In the read committed isolation level, this point is the time at which the statement was opened. For example, if a SELECT statement opens at SCN 1000, then this statement is consistent to SCN 1000.

In a serializable or read-only transaction this point is time the transaction began. For example, if a transaction begins at SCN 1000, and if multiple SELECT statements occur in this transaction, then each statement is consistent to SCN 1000.

In a Flashback Query operation (SELECT ... AS OF), the SELECT statement explicitly specifies the point in time. For example, you can query a table as it appeared last Thursday at 2 p.m.
10 окт 14, 01:43    [16684829]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить