Учебное пособие Для студентов университетов Специальностей «Информатика», «Прикладная математика»



Pdf көрінісі
бет169/177
Дата15.02.2022
өлшемі2,58 Mb.
#25567
түріУчебное пособие
1   ...   165   166   167   168   169   170   171   172   ...   177
Операции REF и DEREF. 
Результатом  выполнения  операции 
REF(аргумент)  является  ссылка  на  запрашиваемый  объект.  Как  и  для 
VALUE, аргумент REF – это переменная корреляции. Приведем пример, 
в котором выбирается ссылка на строку таблицы с конкретным значени-
ем атрибута ID: 
 
192


 
DECLARE  
CURRENT_BOOK_REF  REF  BOOK_T; 
     BEGIN 
SELECT  REF(B)   INTO CURRENT_BOOK_REF   
FROM BOOK_S  B  WHERE    ID   =   10;  
END; 
Операция DEREF(ссылка)  возвращает  исходный  объект  по  заданной 
на  него  ссылке.  Продолжим  предыдущий  пример,  в  котором  обновим 
значение атрибута TITLE у объекта, выбранного по ссылке: 
DECLARE 
CURRENT_BOOK_REF  REF  BOOK_T; 
CURRENT_BOOK   BOOK_T;  
BEGIN    
SELECT  REF(B)   INTO CURRENT_BOOK_REF   
FROM BOOK_S  B  WHERE    ID   =   10;  
      SELECT    DEREF(CURRENT_BOOK_REF)  
      INTO   CURRENT_BOOK   FROM   DUAL; 
      CURRENT_BOOK.TITLE  :=  'Анна Каренина';  
END; 
Если объект, на который указывает REF, удален, то ссылку называют 
висячей
 (dangling), поскольку теперь она указывает на несуществующий 
объект. Использовать операцию DEREF для висячей ссылки нельзя. Что-
бы проверить, не является ли ссылка  висячей,  применяется предикат IS 
DANGLING.  Все  рассмотренные  операции (VALUE, REF, DEREF и IS 
DANGLING)  можно  использовать  только  в SQL-операторах.  В  проце-
дурных операторах это запрещено. 
В  операторах INSERT и UPDATE используется  конструкция – RE-
TURNING. Она применяется для считывания информации из вновь вве-
денной или обновленной строки; при этом формировать дополнительный 
запрос не требуется. Синтаксис конструкции RETURNING таков: 
RETURNING список_выбора INTO список_ввода; 
где список_выбора аналогичен списку выбора запроса, а список_ввода  
это  то  же  самое,  что  и  оборот INTO запроса.  Например,  если  в  объект-
ную  таблицу  вводится  некоторый  объект,  то  можно  вернуть  ссылку  на 
вновь вводимый объект следующим образом: 
DECLARE 
CURRENT_BOOK_REF  REF  BOOK_T; 
BEGIN 
 
193


 
INSERT INTO BOOK_S  B VALUES 
(BOOK_T(40, 'Игрок', 'Достоевский Ф.',  3000))  
RETURNING REF(B)  INTO  CURRENT_BOOK_REF  ;  
END; 


Достарыңызбен бөлісу:
1   ...   165   166   167   168   169   170   171   172   ...   177




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет