При помощи SQL функций - как не трудно догадаться - можно выполнять операции на базами данных, используя SQL. Особенностью этих функция является то, что для пользователя эта функция выглядит как обычная С1 функция, и ее можно использовать в контенте страниц, шаблонов страниц, в XSLT и т.д.
Давай рассмотрим простой пример получения данных из таблицы базы данных Microsoft SQL Server.
У нас есть таблица Products в базе данных Northwind на Microsoft SQL Server Express. Нам нужно получить названия продуктов (ProductName) и их стоимость (UnitPrice), и представить это на странице сайта в виде таблицы.
SQL функция возвращает данные как XML. И эти данные можно использовать в XSLT функции, чтобы представить их в нужном нам виде.
Создание SQL функции состоит из 2 шагов:
<root>
<NewDataSet>
<Table>
<ProductName>Chai</ProductName>
<UnitPrice>18.0000</UnitPrice>
...
</Table>
</NewDataSet>
</root>
<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>
Давай рассмотрим простой пример получения данных из таблицы базы данных Microsoft SQL Server.
У нас есть таблица Products в базе данных Northwind на Microsoft SQL Server Express. Нам нужно получить названия продуктов (ProductName) и их стоимость (UnitPrice), и представить это на странице сайта в виде таблицы.
SQL функция возвращает данные как XML. И эти данные можно использовать в XSLT функции, чтобы представить их в нужном нам виде.
Создание SQL функции состоит из 2 шагов:
- Создание подключения к базе данных.
- Создание запроса.
Для одного подключения можно создавать несколько запросов, поэтому первый шаг обычно выполняется один раз для одной базы данных.
Создаем подключение к базе данных
- В админке в разделе Functions, выбираем узел SQL functions и нажимаем Add SQL Connection
- Заполняем поля в появившемся окне и нажимаем OK.
- Name: Указываем имя для нашего подключения, напр. DemoDB
- Connection String: Указываем строку подключения к базе данных, напр. Data Source=.\SQLEXPRESS;Database=DemoDB;Integrated Security=True;
- MS SQL Server: Отмечаем "галочкой" опцию "Это база данных Microsoft SQL Server"
Подключение должно появиться под SQL functions.
Теперь создадим простой запрос SELECT:
- Выбираем подключение (в нашем случае - DemoDB) и нажимаем Add New SQL Query.
- Заполняем поля в появившемся окне и нажимаем 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 функции
- Создаем XSLT функцию с названием Demo.Northwind.ShowProducts (см. Создание XSLT функции)
- Добавляем вызов функции Demo.Northwind.Products на вкладке Function Calls редактора функций (см. Вызов другой функции из XSLT функции)
- В шаблон 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-функции на странице).
Комментариев нет:
Отправить комментарий