🚀 Вийди на новий рівень крипто-торгівлі!
Easy Trade Bot — автоматизуй свій прибуток уже зараз!

Ми пропонуємо перелік перевірених прибуткових стратегій на такі пари як BTC, DOT, TRX, AAVE, ETH, LINK та інші. Ви можете підключити автоматичну торгівлю на своєму акаунті Binance або отримувати торгові рекомендації на email у режимі реального часу. Також можемо створити бота для обраної вами монети.

Всі результати торгів ботів доступні для перегляду у зручних таблицях на головній сторінці. Швидко, динамічно та прозоро!

Перейти до бота + 30$ бонус

SQL/CLR, Using .NET Procedural Code, UDT, TRIGGERS

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Не вказано

Інформація про роботу

Рік:
2010
Тип роботи:
Звіт про виконання лабораторної роботи
Предмет:
Інші
Варіант:
5

Частина тексту файла (без зображень, графіків і формул):

Міністерство Освіти І НАУКИ України Національний університет "Львівська політехніка" Інститут КНІТ Кафедра ПЗ ЗВІТ До лабораторної роботи № 5 На тему: “ SQL/CLR, Using .NET Procedural Code, UDT, TRIGGERS ” З дисципліни : " Бази даних. Частина 2 " Лектор: Доцент каф. ПЗ Павич Н.Я. Виконав: Прийняв: Доцент каф. ПЗ Павич Н.Я. Львів – 2010 Мета роботи: Ознайомитись із використанням CLR, збережених процедур, використанням користувацьких типів даних (UDT) та тригерів у SQL Server 2008 Завдання до лабораторної роботи Виконайте всі пункти і запишіть відповіді на поставлені в них питання. Створіть проект на .NET, опишіть функцію (UDF) згідно варіанту, каталогізуйте збірку та функцію у SQL Server, напишіть демонстраційний код T-SQL для використання цієї функції. Створіть користувацький тип даних (UDT) згідно варіанту, каталогізуйте збірку, і приведіть демонстраційний T-SQL код. UDT має містити щонайменше 2 поля різного типу даних (їх можна розмежувати, наприклад знаком #, $ тощо). Створіть тригер та продемонструйте його використання. Хід виконання завдання SQL/CLR Завантаження і каталогізації збірки catalog.sql use Lab5BD go -- create the assembly CREATE ASSEMBLY MetricConverter from 'F:\!\clr\MetricConverter.dll' go -- drop the assembly DROP ASSEMBLY MetricConverter go -- attempt create assembly with a different name CREATE ASSEMBLY MConverter from 'F:\!\clr\MetricConverter.dll' go -- attempt create assembly with a different case CREATE ASSEMBLY mConverter from 'F:\!\clr\MetricConverter.dll' go Error: Assembly "mConverter" already exists in database "Lab5BD" -- define a managed user-defined function CREATE FUNCTION KilogramsToPounds(@weight float) returns float external name MConverter.[DM.EssentialYukon.MetricConverter].KilogramsToPounds go sp_configure 'clr enabled', 1 go reconfigure go -- use it in T-SQL DECLARE @a float DECLARE @b float set @a = 10 set @b = dbo.KilogramsToPounds(@a) print @b GO --22.0462 -- drop it DROP FUNCTION KilogramsToPounds go -- attempt create function with a different case CREATE FUNCTION KilogramsToPounds(@weight float) returns float external name MConverter.[DM.EssentialYukon.MetricConverter].KilogramsToPOUNDS go Error: Could not find method 'KilogramsToPOUNDS' for type 'DM.EssentialYukon.MetricConverter' in assembly 'MetricConverter' -- drop the assembly DROP ASSEMBLY MConverter go --DROP ASSEMBLY failed because 'MConverter' is referenced by object 'KilogramsToPounds'. DROP FUNCTION KilogramsToPounds go DROP ASSEMBLY MConverter go --Command(s) completed successfully. Залежності збірки Каталогізовуємо збірку: dependency.sql use Lab5BD go -- create the assembly CREATE ASSEMBLY TempFunctions from 'F:\!\clr\TempFunctions.dll' go Виконуємо наступний Transact-SQL код для вивчення SQL Server представлень метаданих: -- select from appropriate system tables select * from sys.assemblies go select * from sys.assembly_files go select * from sys.assembly_references go  --create function against metricconverter dll CREATE FUNCTION KilogramsToPounds(@weight float) returns float external name MetricConverter.[DM.EssentialYukon.MetricConverter].KilogramsToPounds go Error: Assembly 'MetricConverter' is not visible for creating SQL objects. Use ALTER ASSEMBLY to change the assembly visibility. DROP ASSEMBLY MetricConverter go Error: DROP ASSEMBLY failed because the specified assemblies are referenced by assembly 'TempFunctions'. -- drop the assembly -- does this drop the dependent assembly? drop assembly TempFunctions go dependent assembly MetricConverter was dropped also --alter metricconverter to make it visible CREATE ASSEMBLY TempFunctions from 'F:\!\clr\TempFunctions.dll' go alter assembly MetricConverter with visibility = on go --go back and retry creating the function CREATE FUNCTION KilogramsToPounds(@weight float) returns float external name MetricConverter.[DM.EssentialYukon.MetricConverter].KilogramsToPounds go Command(s) completed successfully. moveasasm.sql use Lab5BD go -- 0. first, drop everything if exists(select name from sys.objects where name = 'KilogramsToPounds') drop function KilogramsToPounds go drop assembly TempFunctions go drop assembly MetricConverter go -- 1. Register the assembly CREATE ASSEMBLY MetricConverter from 'F:\!\clr\MetricConverter.dll' go -- 2. Extract assembly bytes to a variable declare @x varbinary(max) select @x = content from sys.assembly_files where name='F:\!\clr\MetricConverter.dll' --print @x -- 3. Change database and catalog from bytes use RCompany create assembly MetricConverter from @x go --check to see it exists in AdventureworksDW use RCompany select * from sys.assemblies MetricConverter 1 65536 metricconverter, version=0.0.0.0, culture=neutral, publickeytoken=null, processorarchitecture=msil 1 SAFE_ACCESS 1 2009-12-23 20:00:00.480 2009-12-23 20:00:00.480 1 CLRProcs (Using .NET Procedural Code) Пробую передати значення null в каталогізовану функцію: cataloging.sql CREATE DATABASE demo1 go use demo1 go -- create the assembly CREATE ASSEMBLY MetricConverter from 'F:\!\clrprocs\MetricConverter.dll' go -- catalog some of the functions as SQL UDFs CREATE FUNCTION KilogramsToPounds(@weight float) returns float external name MetricConverter.[DM.EssentialYukon.MetricConverter].KilogramsToPounds go CREATE FUNCTION FahrenheitToCentigrade(@temp float) returns float external name MetricConverter.[DM.EssentialYukon.MetricConverter].FahrenheitToCentigrade go -- use it declare @x float declare @y float set @x = -40 set @y = dbo.FahrenheitToCentigrade(@x) print @y go -- use it with NULL input declare @x float declare @y float set @x = NULL set @y = dbo.FahrenheitToCentigrade(@x) if @y is null print 'NULL' print @y go Error: 'FahrenheitToCentigrade' failed because parameter 1 is not allowed to be null. -- use weight conversion with null declare @x float declare @y float set @x = null set @y = dbo.KilogramsToPounds(@x) print 'KG' if @y is null print 'NULL' print @y go Error: 'KilogramsToPounds' failed because parameter 1 is not allowed to be null. -- fill in the table creation CREATE TABLE readings ( ReadingDate datetime not null, City varchar(100) not null, hitemp_far float, hitemp_cen as dbo.FahrenheitToCentigrade(hitemp_far) ) go ALTER TABLE readings WITH NOCHECK ADD CONSTRAINT PK_ReadingDate_City PRIMARY KEY CLUSTERED (ReadingDate, City) go CREATE INDEX IDX_hitemp_far ON readings(hitemp_far) go CREATE INDEX IDX_hitemp_cen ON readings(hitemp_cen) go Error: Column 'hitemp_cen' in table 'readings' cannot be used in an index or statistics or as a partition key because it is non-deterministic. drop table readings go DROP FUNCTION KilogramsToPounds go DROP FUNCTION FahrenheitToCentigrade go drop assembly MetricConverter go --build function FahrenheitToCentigrade with attribute --[SqlFunction(DataAccess = DataAccessKind.None, IsDeterministic = true, IsPrecise = true)] --create assembly MetricConverter and function FahrenheitToCentigrade CREATE TABLE readings ( ReadingDate datetime not null, City varchar(100) not null, hitemp_far float, hitemp_cen as dbo.FahrenheitToCentigrade(hitemp_far) persisted ) go creating index = Command(s) completed successfully. insert into readings values (GETDATE(), 'Lviv', 25), (GETDATE(), 'Kyiv', 35) select * from readings  sqltypes.sql use demo1 go drop table readings drop function FahrenheitToCentigrade drop function KilogramsToPounds drop assembly MetricConverter go -- create the assembly CREATE ASSEMBLY MetricConverter from 'F:\!\clrprocs\MetricConverter.dll' go create function FahrenheitToCentigrade(@temp float) returns float with RETURNS NULL ON NULL INPUT external name MetricConverter.[DM.EssentialYukon.MetricConverter].FahrenheitToCentigrade go -- òåïåð ôóíêö³ÿ ïîâèííà ïîâåðòàòè NULL ÿêøî ¿é ïåðåäàäóòü NULL, à ñàìà ô-ö³ÿ âèêëèêàòèñÿ íå áóäå -- use it declare @x float declare @y float set @x = 10 set @y = dbo.FahrenheitToCentigrade(@x) print @y go -- -12.2222 -- use it with NULL input declare @x float declare @y float set @x = NULL set @y = dbo.FahrenheitToCentigrade(@x) if @y is null print 'NULL' print @y go -- NULL drop function FahrenheitToCentigrade drop assembly MetricConverter go -- create the assembly CREATE ASSEMBLY MetricConverter from 'F:\!\clrprocs\MetricConverter.dll' go -- TO DO: Function declaration here --public static SqlDouble CentigradeToFahrenheit(SqlDouble v) -- { if (v.IsNull == true) -- return 0; -- return (v*9)/5+32; } create function CentigradeToFahrenheit(@temp float) returns float external name MetricConverter.[DM.EssentialYukon.MetricConverter].CentigradeToFahrenheit go -- use it with NULL input declare @x float declare @y float set @x = NULL set @y = dbo.CentigradeToFahrenheit(@x) print @y go -- 0 -- TO DO: Function declaration here --public static SqlDecimal CentigradeToFahrenheitDecimal(SqlDecimal v) -- { if (v.IsNull == true) return 0; -- return (v * 9) / 5 + 32; } create function CentigradeToFahrenheitDecimal(@temp decimal) returns decimal external name MetricConverter.[DM.EssentialYukon.MetricConverter].CentigradeToFahrenheitDecimal go declare @x decimal declare @x1 decimal declare @x2 decimal declare @y decimal declare @y1 decimal declare @y2 decimal set @x = 1.56 set @x1 = .56 set @x2 = 1.56E6 set @y = dbo.CentigradeToFahrenheitDecimal(@x) set @y1 = dbo.CentigradeToFahrenheitDecimal(@x1) set @y2 = dbo.CentigradeToFahrenheitDecimal(@x2) print @y -- 36 (32,866666666666666666666666666667) print @y1 -- 34 (32,311111111111111111111111111111) print @y2 -- 2808032 (866698,66666666666666666666666667) go Тепер створюю запит зі звертанням до збережених процедур: parmdirection.sql use demo1 go -- create the assembly CREATE ASSEMBLY MetricConverter from 'F:\!\clrprocs\MetricConverter.dll' go drop procedure AddToTemp drop procedure AddAndReturnBoth drop procedure AddAndReturnBothOut drop ASSEMBLY MetricConverter go create procedure AddToTemp(@temp float out, @delta float) as external name MetricConverter.[DM.EssentialYukon.AdditionalClass].AddToTemp go create procedure AddAndReturnBoth(@temp float, @delta float, @rez_f float out, @rez_c float out) as external name MetricConverter.[DM.EssentialYukon.AdditionalClass].AddAndReturnBoth go create procedure AddAndReturnBothOut(@temp float, @delta float, @rez_f float out, @rez_c float out) as external name MetricConverter.[DM.EssentialYukon.AdditionalClass].AddAndReturnBothOut go -- try them out declare @a float declare @c float declare @d float set @a = 10 exec AddToTemp @a out, 44 print @a -- 54 exec AddAndReturnBoth 22, 44, @c out, @d out print @c -- 66 print @d -- 18.8889 exec AddAndReturnBothOut 33, 44, @c out, @d out print @c -- 77 print @d -- 25 UDT ComplexNumberClass.cs
Антиботан аватар за замовчуванням

01.01.1970 03:01-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!