Областнойцентр bit default 0 Null) 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Областнойцентр 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; просмотров: 428; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.224.39.32 (0.007 с.)