lab1_2012_93 (1037562), страница 2
Текст из файла (страница 2)
quit
}
Пример работы с динамическим запросом:
set o=##class(%ResultSet).%New("%DynamicQuery:SQL")
do o.Prepare("select поля from таблица where условие" )
do o.Execute()
while o.Next()
{
set a=o.Data("поле")
write !,a
}
В среде Cache` Terminal вызвать процедуру:
do процедура^программа(параметр)
Преобразовать процедуру в метод класса ученика и продемонстрировать ее выполнение в Терминале как метод класса и в Портале как хранимую процедуру.
6.2. Освоить работу с запросами
В среде Cache` Студия создать запрос InDop(направление), который возвращает список учеников, учащихся в СцецКлассах (по указанному направлению), а также название и руководителя Класса.
Определить запрос как хранимую процедуру и продемонстрировать ее выполнение в Портале.
Дополнительное задание:
Задание 7.1. Работа с коллекциями.
В класс "ученик" - добавить свойство:
-
Prize - победы на конкурсах — список (массив) строковых.
В среде Cache` Портал (раздел SQL, пакет USER) продемонстрировать выполнение SQL операторов для выполнения запросов, например:
-
Просмотр списка всех учеников, имеющих победы.
-
Добавление/удаление победы ученику.
В среде Cache` Terminal продемонстрировать (или написать соответствующую процедуру) для добавления/удаления победы, используя объектный синтаксис.
В среде Cache` Terminal продемонстрировать (или написать соответствующую процедуру) для добавления/удаления победы, используя глобалы.
Задание 7.2. Преобразование классов объектов.
В среде Cache` Terminal продемонстрировать (или написать соответствующую процедуру на языке Cache` Object Script в среде Cache` Studio и вызвать ее из среды Cache` Terminal) преобразование объекта класса «Класс» в объект класса «СпецКласс» и наоборот с указанием направления. Реализуется через обращение к глобалам.
Задание 8. Дополнительные возможности работы с объектами
8.1. Скрытые свойства. Вложенные объекты
Создать класс Price (взнос) — ВСТРОЕННЫЙ, содержащий поля:
-
sum (общая сумма взносов) — целое,
-
уear (год последнего взноса) — целое.
В класс "ученик" - добавить свойство:
-
many (прибыль) — объект класса взнос, СКРЫТОЕ (устанавливается в Инспекторе свойств в Студии).
и методы:
-
szp (сумма, год) - устанавливает значения суммы и года для взноса ученика, выходных параметров нет. Обращение к полям через объектный синтаксис.
-
gzp() — возвращает значение суммы взноса за текущий год.
В среде Cache` Терминал открыть объект ученика и продемонстрировать вызов методов для задания и просмотра его взносов. В среде Портала продемонстрировать содержимое таблицы ученик.
8.2. Переопределение обработчиков событий
Создать класс Arhiv (архив) — хранимый, содержащий поля:
-
fio — строковое (ученик),
-
name — строковое (класс=номер и буква),
-
his (источник записи) — строковое.
В классе "ученик" переопределить метод класса для обработки события %OnDelete() так, чтобы он при удалении ученика добавлял в Архив запись с названием Класса удаляемого ученика (использовать встроенный SQL). Значение поля his = «obj».
В Терминале удалить ученика (метод %DeleteId()). В Портале продемонстрировать содержимое таблицы Архив.
В Портале удалить ученика (sql запрос DELETE). В Портале продемонстрировать содержимое таблицы Архив.
8.3.Вычисляемые поля
В класс "Класс" - добавить свойство:
-
sal (сумма всех взносов) — целое, ВЫЧИСЛЯЕМОЕ.
и переопределить его методы:
-
GET — возвращает суммарные взносы учеников для данного Класса (использовать встроенный SQL),
-
SET — для всех учеников данного Класса увеличивает сумму взносов на указанную (использовать встроенный SQL).
В среде Cache` Terminal открыть объект класса и продемонстрировать работу с вычисляемым полем:
write объект.sal
set объект.sal=55
В среде Портала продемонстрировать соответствующие изменения в таблице учеников.
Задание 9: Дополнительные возможности работы с таблицами
9.1. Вычисляемые поля таблиц
В класс "Класс" - добавить свойство:
-
acol (средние взносы всех учеников данного Класса) — целое, SQL-ВЫЧИСЛЯЕМОЕ. Не переопределены методы Get и Set. Определить SQL-формулу для вычисления.
Пример:
Property cs As %Integer [ Calculated,
SqlComputeCode = { set n={поле} &sql(select поле into :c from таблица where поле=:n)
set {cs}=c}, SqlComputed ];
В классе "СпецКласс" - переопределить свойство:
-
acol для вычисления средних взносов учеников за текущий год .
В среде Cache` Портал продемонстрировать содержимое таблиц Класс и СпецКласс.
9.2. Триггеры
В класс "ученик" добавить триггер:
-
ПОСЛЕ УДАЛЕНИЯ - при удалении ученика добавлять в Архив запись с названием Класса удаляемого ученика (использовать встроенный SQL). Значение поля his = «sql».
В Терминале удалить ученика (метод %DeleteId()). В Портале продемонстрировать содержимое таблицы Архив.
В Портале удалить ученика (sql запрос DELETE). В Портале продемонстрировать содержимое таблицы Архив.
Вопросы для самопроверки:
-
Возможности создания классов и их свойств в среде Cache` Studio.
-
Назначение и возможности утилит Cache` Studio, Cache` Портал и Cache` Терминал.
-
Как связаны между собой таблицы, объекты и глобалы?
-
Что такое класс и что такое пакет?
-
Как связаны между собой названия классов и глобалов?
-
Как связаны экстенты базового и производного классов?
-
Перечислите основные функции работы с объектами хранимых классов.
-
Каким образом можно обращаться к объектам классов как к реляционным таблицам?
-
Где можно просмотреть данные в виде таблиц и в виде глобалов?
-
Каким образом можно работать со списками и массивами, как хранятся их элементы?
-
Каким образом формируются глобалы? В каких глобалах хранятся производные классы?
-
Как импортировать структуры и данные СУБД Cache`?
-
Метод класса и метод экземпляра класса: чем они отличаются, как определяются и как вызываются?
-
Что такое полиморфизм? Приведите пример виртуального вызова.
-
Применение встроенного SQL. Передача параметров.
-
Назначение и использование объекта %ResultSet. Его основные методы.
-
Как определяются и вызываются хранимые процедуры?
-
Назначение, руководительы и определение триггеров. Как они работают?
-
Что такое вычисляемые поля? Как задаются и чем отличаются вычисляемые поля для объектов и запросов?
-
Что такое хранимый и встроенный классы, чем они отличаются?
В отчет:
-
Описания классов.
-
Тексты SQL запросов, команд и процедур на языке COS.
-
Содержимое глобалов и таблиц (скриншоты из Портала).