среда, 19 января 2011 г.

Создание и использование SQL функций

При помощи SQL функций - как не трудно догадаться - можно выполнять операции на базами данных, используя SQL. Особенностью этих функция является то, что для пользователя эта функция выглядит как обычная С1 функция, и ее можно использовать в контенте страниц, шаблонов страниц, в XSLT и т.д.

Давай рассмотрим простой пример получения данных из таблицы базы данных Microsoft SQL Server.


У нас есть таблица Products в базе данных Northwind на Microsoft SQL Server Express. Нам нужно получить названия продуктов (ProductName) и их стоимость (UnitPrice), и представить это на странице сайта в виде таблицы.

SQL функция возвращает данные как XML. И эти данные можно использовать в XSLT функции, чтобы представить их в нужном нам виде.

Создание SQL функции состоит из 2 шагов:
  1. Создание подключения к базе данных.
  2. Создание запроса.
Для одного подключения можно создавать несколько запросов, поэтому первый шаг обычно выполняется один раз для одной базы данных.

Создаем подключение к базе данных
  1. В админке в разделе Functions, выбираем узел SQL functions и нажимаем Add SQL Connection
  2. Заполняем поля в появившемся окне и нажимаем OK.
  • Name: Указываем имя для нашего подключения, напр. DemoDB
  • Connection String: Указываем строку подключения к базе данных, напр. Data Source=.\SQLEXPRESS;Database=DemoDB;Integrated Security=True;
  • MS SQL Server: Отмечаем "галочкой" опцию "Это база данных Microsoft SQL Server"
Подключение должно появиться под SQL functions.

Теперь создадим простой запрос SELECT:
  1. Выбираем подключение (в нашем случае - DemoDB) и нажимаем Add New SQL Query.
  2. Заполняем поля в появившемся окне и нажимаем OK.
  • Name: Указываем имя нашей SQL функции, напр. Products
  • Namespace: Указываем пространство имен для функции, напр. Demo.Northwind
  • SQL command text: Вводим текст запроса SELECT ProductName, UnitPrice FROM Products
(Три опции, контролирующие поведение функции оставляем как есть.)

Функция появится в дереве функций под нашим подключением и откроется в редакторе.

Информации, которую мы предоставили при создании функции, сгруппирована на двух вкладках Settings и SQL Command, где ее можно отредактировать по необходимости.

На вкладке Input Parameters можно задать входные параметры для нашей функции и использовать их в нашем SQL запросе. (О входных параметрах всех С1 функциях я расскажу в отдельном сообщении.)

А вот вкладка Preview (Предварительный просмотр) представляет для нас интерес. Она позволяет посмотреть XML, в котором представлены данные, возвращаемые в результате запроса.


<root>
  <NewDataSet>
    <Table>
      <ProductName>Chai</ProductName>
      <UnitPrice>18.0000</UnitPrice>
      ...
    </Table>
  </NewDataSet>
</root>

Она также служит своего рода отладкой для функции. Если что-то не так в подключении или запросе, вместо данных будет выведена ошибка.

А теперь создадим XSLT функцию, вызовем из нее нашу SQL функцию Demo.Northwind.Products, и представим данные, возвращаемые ею, в виде простой таблицы.

Используем SQL функцию в XSLT функции
  1. Создаем XSLT функцию с названием Demo.Northwind.ShowProducts (см. Создание XSLT функции)
  2. Добавляем вызов функции Demo.Northwind.Products на вкладке Function Calls редактора функций  (см. Вызов другой функции из XSLT функции)
  3. В шаблон XSLT функции добавляем код, который представит данные в таблице и сохраняем функцию.

<table>
  <tr>
    <th>Название продукта</th>
    <th>Цена</th>
  </tr>
  <xsl:for-each select="/in:inputs/in:result[@name='Products']/root/NewDataSet/Table">
    <tr>
      <td>
        <xsl:value-of select="ProductName" />
      </td>
      <td>
        <xsl:value-of select="UnitPrice" />
      </td>
    </tr>
   </xsl:for-each>
 </table>

Все готово. Осталось вставить функцию на страницу (см. Использование XSLT-функции на странице).

Комментариев нет:

Отправить комментарий