RETURNS DOUBLE PRECISION BY VALUE
ENTRY_POINT 'ROUNDFLOAT' MODULE_NAME 'LIBUDF'; -- функция определение длины строкового поля с -- отбрасыванием конечных пробелов: DECLARE EXTERNAL FUNCTIONSTRING_LENGTH CSTRING(100) -- в функцию передается указатель на -- строку, заканчивающуюся нулевым -- символом (#0) и длина здесь должна -- быть не меньше, чем длина поля CHAR -- или VARCHAR RETURNS INTEGER BY VALUE–- возврат по значению ENTRY_POINT 'LENGTH_CHAR_FIELD' MODULE_NAME 'EducatorUDF';
Использование UDF в базе данных Объявленную в базе данных функцию пользователя можно использовать при создании доменов и таблиц в вычислимых полях, значениях по умолчанию и контрольных ограничениях. Их можно использовать в операторах изменения данных, триггерах, хранимых процедурах и просто в запросах. Приведем пример запроса с созданными и объявленными выше функциями пользователя:
это запрос для базы данных Employee.fdb: SELECTSALARY, HIRE_DATE, ROUNDFLOAT(SALARY, 2), IBDateToStr(HIRE_DATE), IsDate(HIRE_DATE), CAST(SALARY AS INTEGER) FROMEMPLOYEE;
Задание Лабораторную работу №10 следует выполнять в следующем порядке: 1. Создать аналогично предыдущим лабораторным работам рабочую папку и назвать ее "ЛР10". 2. Разработать для своей базы данных не менее трех функций пользователя. 3. Создать любым текстовым редактором файл, содержащий текст на языке Pascal с этими функциями. Назвать этот файл таким же именем, как базу данных. Дать ему расширение '.dpr'. 4. Откомпилировать его либо с помощью Delphi 7.0, либо с помощью ком-пилятора командной строки 'dcc32.exe'. 5. Поместить исходный файл проекта и откомпилированную библиотеку в рабочую папку "ЛР10" на сервере для копирования в папку 'UDF'. 6. Скопировать в эту папку файл сценария, созданный при выполнении пре-дыдущей лабораторной работы. 7. Открыть в приложении "IB Expert" этот сценарий. 8. Исправить текст комментариев и сделать, чтобы база данных теперь соз-давалась в папке "ЛР10". 9. Добавить в сценарий операторы описания разработанных функций поль-зователя. Для каждой функции пользователя должны присутствовать комментарии, поясняющие ее назначение. 10. Выполнить сценарий и сохранить его в папке "ЛР10". 11. Зарегистрировать созданную базу данных в программе "IB Expert" и под-ключиться к ней. 12. Выполнить в окне "SQL Editor" по одному запросу с каждой созданной функцией пользователя. Описать результаты этих запросов в отчете. 13. Создать в папке "ЛР10" резервную копию базы данных. 14. Создать и сохранить в папке "ЛР10" файл с отчетом о выполнении лабо-раторной работы, который должен называться "Отчет.doc". Ход работы Для создания файла проекта Delphi с исходным текстом библиотеки можно использовать либо среду программирования Delphi 7.0, либо любой текстовый редактор. Процесс получения откомпилированной библиотеки (файла с расширением '*.DLL') описан в разделе "Создание динамической библиотеки с UDF". После помещения команд объявления функций пользователя в сцена-рий, его надо выполнить с помощью программы "IB Expert" аналогично пре-дыдущим лабораторным работам.
10.7. Отчет о выполнении работы Отчет о выполнении лабораторной работы №10 необходимо оформить на листах формата A4. Отчет должен содержать описание и результаты рабо-ты, представляемые в следующей последовательности: 1. Описание разработанных для своей базы данных функций пользователя. 2. Распечатка исходного текста проекта с функциями пользователя. Обяза-тельно должны присутствовать комментарии ко всему проекту со сведе-ниями о назначении файла и его авторе, а также комментарии к создан-ным функциям пользователя. 3. Текст операторов объявления UDF в базе данных. 4. Операторы, использующие созданные и объявленные в базе данных функции пользователя. 5. Примеры запросов с использованием разработанных функций и описание результата их выполнения. 6. Перечень файлов, полученных при выполнении лабораторной работы с указанием их имен, места расположения, даты изменения и размеров (сценарий, база данных, резервная копия базы данных, исходный текст проекта с функциями пользователя, откомпилированная библиотека с функциями пользователя, файл с отчетом). 10.8. Контрольные вопросы 1. Что такое функция пользователя? 2. Как расшифровывается UDF? 3. Как расшифровывается DLL? 4. Где должна располагаться библиотека, чтобы ее могла использовать СУБД Firebird 1.5? 5. Что означают в исходных текстах на Pascal: cdecl, stdcall, exports, external, Result, PChar? 6. Какие существуют способы передачи параметров в функцию? 7. Какой способ передачи параметров используется для UDF в InterBase?
©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.
|