Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 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; просмотров: 556; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.217.128 (0.006 с.) |