【正文】
er update clientmaninfo set ClientName=39。池賢宇 39。 where ClientID=39。C000000539。 before 29 After update freeroom set TypeName=39。海景套房 39。 where TypeName=39??偨y(tǒng)套房 39。 After 刪除數(shù)據(jù) delete from clientmaninfo where ClientName LIKE 39。Ja%39。 after 十 . 編寫自定義函數(shù)。 ( 1)編寫一個(gè)自定義函數(shù),將一個(gè)字符串作為自變量,返回顛倒順序的 字符串。 寫出源代碼。 USE MC酒店前臺(tái)管理系統(tǒng) GO CREATE FUNCTION MBJ(@P VARCHAR(100)) 30 RETURNS VARCHAR(100) AS BEGIN DECLARE @I INT,@N INT SET @N=LEN(@P) SET @I=LEN(@P)1 WHILE @I0 BEGIN SET @P=@P+SUBSTRING(@P,@I,1) SET @I=@I1 END SET @P=RIGHT(@P,@N) RETURN @P END GO SELECT (39。MCJDQTGLXT39。) ( 2) 編寫一個(gè)自定義函數(shù),能夠?qū)崿F(xiàn)參數(shù)化查詢的功能。 create function clientsq(@ClientID char(8)) returns table as return(select ClientID,ClientName,ClientCertificateID from ClientInfo Where ClientID=@ClientID) go SELECT * FROM (39。C000000139。) ( 3) 自己設(shè)定函數(shù)的具體要求,然后編寫出來。 自定義一個(gè)帶參數(shù) SQL 函數(shù) ,輸入一個(gè)參數(shù) n,返回 1*2*3*?? *n CREATE FUNCTION jc (@n int) RETURNS varchar(300) AS BEGIN DECLARE @s varchar(300) set @s=str(@n) 31 while @n1 begin set @s=str(@n1)+39。*39。+ltrim(@s) set @n=@n1 end return(ltrim(@s)) END go select (10) 十一 . 編寫利用游標(biāo)進(jìn)行數(shù)據(jù)處理的存儲(chǔ)過程。并在存儲(chǔ)過程中應(yīng)用事務(wù)的概念。 自己確定過程的具體要求,然后編寫出來。 利用游標(biāo)進(jìn)行數(shù)據(jù)修改的存儲(chǔ)過程,將 ClientInfo 中所有女性的備注改為“女士可免費(fèi)參加舞會(huì)” create procedure UpdateHKUNo 存儲(chǔ)過程里面放置游標(biāo) as begin declare UpdateHKUNoCursor cursor 聲明一個(gè)游標(biāo),查詢滿足條件的數(shù)據(jù) for select ClientID from ClientInfo where ClientSex=39。女 39。 open UpdateHKUNoCursor 打開 declare @noToUpdate varchar(20) 聲明一個(gè)變量,用于讀取游標(biāo)中的值 fetch next from UpdateHKUNoCursor into @noToUpdate while @@fetch_status=0 循環(huán)讀取 begin print @noToUpdate update ClientInfo set ClientRemarks=39。女士可免費(fèi)參加舞會(huì) 39。 where ClientID=@noToUpdate fetch next from UpdateHKUNoCursor into @noToUpdate end end exec UpdateHKUNo close UpdateHKUNoCursor 關(guān)閉 deallocate UpdateHKUNoCursor drop procedure UpdateHKUNo 32 十二 . 編寫一個(gè)實(shí)現(xiàn)修改表的觸發(fā)器,實(shí)現(xiàn)完整性控制。 當(dāng)將顧客消費(fèi)金額減少時(shí)系統(tǒng)為防止人為謀私、操作錯(cuò)誤等拒絕修改 USE MC酒店前臺(tái)管理系統(tǒng) go create trigger t1 on for update as begin declare @oldvalue money declare @newvalue money select @oldvalue=ClientConsume from deleted select @newvalue=ClientConsume from inserted if @newvalue@oldvalue print39??赡艹霈F(xiàn)金額錯(cuò)誤,拒絕修改 39。 else update ClientInfo set ClientConsume= from ClientInfo t1,inserted t2 where = end。 update ClientInfo set ClientConsume=2022 where ClientID=39。C000000139。 drop trigger t1 十三 . 設(shè)置服務(wù)器身份驗(yàn)證模式。用命令創(chuàng)建若干不同驗(yàn)證模式的登錄賬戶。 33 創(chuàng)建登錄用戶 create login bingjie921123 with password=39。12345639。,default_database=MC酒店前臺(tái)管理系統(tǒng) 34 create login admin with password=39。12345639。 create login admin1 with password=39。12345639。,default_database=MC 酒店前臺(tái)管理系統(tǒng) EXEC sp_helplogins 十四 . 將部分登錄賦予服務(wù)器角色。然后撤消。 EXEC sp_addsrvrolemember 39。bingjie92112339。,39。sysadmin39。 EXEC sp_addsrvrolemember 39。admin139。,39。dbcreator39。 EXEC sp_helpsrvrolemember EXEC sp_dropsrvrolemember 39。bingjie92112339。,39。sysadmin39。 EXEC sp_dropsrvrolemember 39。admin139。,39。dbcreator39。 EXEC sp_helpsrvrolemember 十五 . 將部分登錄映射到你的數(shù)據(jù)庫中成為用戶。 create user bj921123 from login bingjie921123 EXEC sp_change_ users_login 39。update_one39。,39。bj92112339。,39。bingjie92112339。 35 十六 . 創(chuàng)建自定義角色、架構(gòu)。 use MC酒店前臺(tái)管理系統(tǒng) go create role bj EXEC sp_addlogin 39。newlogin39。,39。12345639。,39。MC酒店前臺(tái)管理系統(tǒng) 39。 EXEC sp_addrole 39。newrole39。 EXEC sp_adduser 39。newlogin39。,39。newuser39。,39。newrole39。/*創(chuàng)建登錄、角色、用戶 */ EXEC sp_dropuser 39。newuser39。 EXEC sp_droprole 39。newrole39。 SELECT ClientName FROM ClientInfo GRANT SELECT ON ClientInfo TO CJW 36 SELECT ClientName FROM ClientInfo REVOKE SELECT ON ClientInfo FROM CJW EXEC sp_dropuser 39。newuser39。 EXEC sp_droprole 39。newrole39。 EXEC sp_addrole 39。MBJ39。 EXEC sp_adduser 39。CJW39。,39。MBJ39。,39。db_datareader39。 十七 . 通過角色給用戶授權(quán)。 EXEC sp_addlogin 39。CJW39。,39。19927839。,39。MC酒店前臺(tái)管理系統(tǒng) 39。 EXEC sp_helplogins 39。CJW39。 EXEC sp_droplogin 39。CJW39。 USE MC酒店前臺(tái)管理系統(tǒng) GO EXEC sp_addrolemember 39。db_owner39。,39。CJW39。 EXEC sp_droprolemember 39。db_owner39。,39。CJW39。/*通過角色給用戶授權(quán) */ 十八 . 直接給用戶自定義的角色授權(quán),驗(yàn)證其獲得權(quán)限前后的操作差別。 use MC酒店前臺(tái)管理系統(tǒng) go grant select(ClientID,ClientName,ClientPhone) ON ClientInfo to bj921123 grant select on RoomInfo to public EXEC sp_helprotect 39。ClientInfo39。 37 EXEC sp_helprotect 39。RoomInfo39。 十九 .刪除用戶和自定義角色 EXEC sp_dropuser 39。newuser39。 EXEC sp_droprole 39。newrole39。 Drop user ‘bj921123’ Drop role ‘newrole’