Как сделать двунаправленный запрос
Категория реферата: Рефераты по информатике, программированию
Теги реферата: реферат народы, антикризисное управление предприятием
Добавил(а) на сайт: Koltyshev.
1 2 3 4 5 6 | Следующая страница реферата
Как сделать двунаправленный запрос
Евгений Каратаев
Мне давно было интересно, можно ли сделать в Cache' такой запрос, чтобы его можно было бы прокручивать назад, например что-то вроде команды, парной к Fetch, например Prior. Собственные средства Cache' почему-то не предоставляют такой возможности. Для этого я изучил характер взаимодействия sql-движка с Cache Object Script. В результате исследований выяснилось, что это возможно, хотя и не столь гладко, как бы того хотелось. Надеюсь, читатель с пониманием отнесется к возникшей некрасивости.
Возьмем и сделаем рутину со следующим текстом:
run()
&sql(declare cur CURSOR for select ID, Name, Home
from Sample.Person order by ID asc)
&sql(open cur)
&sql(fetch cur)
&sql(close cur)
q
Скомпилируем и сохраним текст полученной int-рутины. После чего изменим рутину следующим образом:
run()
&sql(declare cur CURSOR for select ID, Name, Home
from Sample.Person order by ID desc)
&sql(open cur)
&sql(fetch cur)
&sql(close cur)
q
И также сохраним текст полученной int-рутины. В запросе можно использовать любую имеющуюся у Вас таблицу, просто в данном случае я использовал таблицу из штатного дистрибутива.
Сличим полученные тексты int-рутин. Ничего особенно романтичного в работе автоматического генератора не наблюдается, за исключением того, что сгенерированные тексты полностью совпадают за исключением замены операции $o() на $zp(), которые друг другу прямо противоположны по направлению. Таким образом, для реализации двунаправленной прокрутки используем оба варианта и попробуем совместить их данные, оставив и использовав коды (рутины) доступа.
Для работы нам потребуются некие дежурные данные. Создаем новый класс, например User.NameList, наследник %Persistent и %Populate. Добавляем ему новое свойство Name:%String. Сохраняем, компилируем. В терминале создаем 10 объектов для теста:
d ##class(User.NameList).Populate()
Запускаем SQL Manager и для проверки что действительно создана таблица sql и содержит тестовые данные, выполняем запрос
select ID, Name from NameList.
Если все было в порядке, то будет показана табличка с двумя колонками и десятком строк. Имена англоязычные, вымышленные. Для проверки работы прокрутки в обе стороны создадим рутину (например FetchBack) с кодом
Рекомендуем скачать другие рефераты по теме: конспект 6 класс, м реферат.
1 2 3 4 5 6 | Следующая страница реферата