Классика баз данных - статьи

       

в качестве языка запросов. СУБД


многие существующие приложения и инструменты используют SQL в качестве языка запросов. СУБД Cache' поддерживает все элементы ANSI-стандартов, реализованных для SQL и SQL-92.

Для облегчения разработки прикладных систем баз данных, Cache' поддерживает встраивание SQL в методы и программы. Встроенный SQL может быть использован для решения следующих задач:

  • Реализации сложных запросов к базам данных
  • Представления полученных результатов запросов в качестве значений переменных встроенного языка разработки приложений Cache' Object Script (COS).

    Пример использования встроенного SQL запроса:

    new id, Surname set Surname="Ivanov" &sql(SELECT Id into :id FROM Person where Surname=:Surname)

    Приведенный код ищет по полю Surname таблицы Person поле со значением Ivanov и сохраняет найденный OID объекта в локальной переменной id. Пример демонстрирует случай использования встроенного SQL-запроса, не основанного на курсоре. В данном случае запрос всегда возвращает только одну строку.

    Если же необходимо получить несколько строк из результирующей выборки запроса необходимо использовать SQL, основанный на курсоре. Курсор в данном случае является указателем на одну строку и при проведении операции FETCH курсор передвигается к следующей строке.

    Использование курсора предполагает выполнение следующей последовательности операций:

  • Объявление курсора;
  • Открытие курсора;
  • Проведение серий операций чтения (FETCH) для курсора;
  • Закрытие курсора.

    Пример использование курсора в SQL-запросах:

    &sql(DECLARE PersCur CURSOR FOR SELECT Surname, DateOfBirth FROM Person, WHERE Surname="Ivanov") &sql(OPEN PersCur) &sql(FETCH PersCur INTO :surname, :DateOB) &sql(CLOSE PersCur)

    В приведенном примере создается курсор PersCur на SQL-запрос SELECT, после чего определенный курсор открывается, а затем с помощью команды FETCH производится последовательное сканирование результатов выборки и в локальных переменных surname и DateOB сохраняются соответствующие значения полей Surname и DateOfBirth таблицы Person.После этого курсор закрывается.


    Содержание  Назад  Вперед