Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Областнойцентр bit default 0 Null)
-- Заносим данные в локальную переменную @rowset INSERT @rowset (КодРегиона, Страна, Область, Город) SELECT КодРегиона, Страна, Область, Город FROM Регион WHERE Страна = @Страна -- Заносим данные в столбец "ОбластнойЦентр" переменной @rowset UPDATE @rowset SET ОбластнойЦентр = 1 WHERE Область = '' -- Заносим данные в результирующую переменную @CountryRegion типа таблица, т.к. -- локальная переменная @rowset после выхода из функции автоматически уничтожается INSERT @CountryRegions SELECT КодРегиона, Страна, Город, ОбластнойЦентр FROM @rowset RETURN END GO /* Проверка работы функции fn_ВыборРегионовСтраны */ SELECT * FROM fn_ВыборРегионовСтраны('Беларусь') SELECT * FROM fn_ВыборРегионовСтраны('Россия') GO Ç
Для внесения изменений в существующие пользовательские функции используются те же команды, что и для их создания, с тем лишь отличием, что вместо зарезервированного слова CREATE используется слово ALTER (см. [1], стр. 1119).
Для удаления пользовательской функции используется команда, имеющая следующий синтаксис (см. [1], стр. 1120):
DROP FUNCTION { [ owner_name. ] function_name } [,... n ]
Задание к работе 1. Создайте хранимую процедуру pr_ТоварНаибольшегоСпроса, которая решает рассмотренную выше (см. раздел I) задачу определения наименования товара, по которому был наибольший спрос за последние N дней. Эта процедура должна иметь один входной параметр (@Интервал) и два выходных параметра (@Имя, @Итог). 2. Создайте хранимую процедуру pr_КлиентПоставщик_СтранаИнтервал, которая подсчитывает, сколько различных клиентов и различных поставщиков из указанной страны фигурирует в таблице Заказ, причем анализируются только те заказы, в которых значение поля Дата заказа попадает в указанный интервал дат. Эта процедура должна иметь три входных параметра (@Страна, @НачалоИнтервала, @КонецИнтервала) и два выходных параметра (@ЧислоКлиентов, @ЧислоПоставщиков). Усложненный вариант. Расширьте возможности процедуры следующим образом: если значение параметра @Страна не будет указано (т.е. равно NULL), то подсчет клиентов и поставщиков должен вестись независимо от их национальной принадлежности. 3. Создайте пользовательскую функцию fn_getТолькоДата типа Scalar, которая, в отличие от встроенной функции getdate(), возвращающей текущие дату и время, возвращает только текущую дату (без времени). Эта функция, так же как и встроенная функция getdate(), не имеет входных параметров и должна возвращать значение типа datetime.
4. Создайте пользовательскую функцию fn_getФамилияИнициалы типа Scalar, которая на основе текстовой строки, содержащей фамилию, имя и отчество, формирует текстовую строку, содержащую фамилию и инициалы, и при этом все строчные буквы должны быть заменены прописными. Эта функция должна иметь один входной параметр (@ФИО). Усложненный вариант. Расширьте возможности функции таким образом, чтобы была допустима исходная строка (задаваемая параметром @ФИО), содержащая не один, а несколько пробелов между фамилией и именем или между именем и отчеством, а также допускающая наличие лидирующих пробелов перед фамилией. 5. Создайте пользовательскую функцию fn_getGroup_НаименованиеВалюта типа Inline Table-valued, которая возвращает таблицу со следующими столбцами:
Эта таблица должна отражать результат группировки данных по полям Наименование и ИмяВалюты. Для каждой такой группы подсчитывается итоговое количество заказанного товара. Пользовательская функция fn_getGroup_НаименованиеВалюта должна иметь два входных параметра (@НачалоИнтервала, @КонецИнтервала), поэтому при формировании результирующей таблицы необходимо учитывать только те строки из таблицы Заказ, в которых значение поля Дата заказа попадает в указанный параметрами интервал дат. 6. Создайте пользовательскую функцию fn_getTable_СтоимостьНВ типа Multi-statement Table-valued, которая возвращает таблицу со следующими столбцами:
Эта таблица строится в два этапа. Сначала создается таблица со столбцами, показанными выше, где столбец Номер является автоинкрементным первичным ключом, столбцы Цена в НВ (цена в национальной валюте) и Стоимость в НВ (стоимость в национальной валюте) являются вычисляемыми. Число строк этой таблицы будет равно числу строк в таблице Заказ.
На втором этапе из полученной таблицы удаляются все те строки, в которых значение столбца Стоимость в НВ будет меньше, чем значение входного параметра функции. В результате будет получена таблица, которую и должна возвращать данная пользовательская функция. Эта функция должна иметь один входной параметр (@ГраницаСтоимости). 7. Разработайте программный код для проверки работы созданных хранимых процедур и пользовательских функций. 8. Фрагменты кода, относящиеся к выполнению задания, сохраните в файле D:\Work\X7230ХХХ\Script3.sql. 9. Удалите базу данных Склад_ХХХ. Для этого в ее контекстном меню выберите команду Delete и затем в появившемся окне Delete Object установите флажок Close Existing Connections.
|
||||||||||||||||||||||||||
Последнее изменение этой страницы: 2017-01-25; просмотров: 438; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.133.153.70 (0.008 с.) |