日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

函数,游标与存储过程的综合应用

發(fā)布時(shí)間:2023/12/13 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 函数,游标与存储过程的综合应用 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

--在TOY數(shù)據(jù)庫(kù)中完成以下操作
use toy
go
--1、編寫一個(gè)存儲(chǔ)過(guò)程,接收任意一個(gè)訂單號(hào),打印訂單的表頭數(shù)據(jù)。格式如下:
--(其中訂單編號(hào)由訂單日期+訂單號(hào)的字符串組成)
--訂單編號(hào):20010520000001???訂貨日期:2001-05-20???訂貨人:拉爾森
create procedure proc_order
(@orderid as varchar(6))
as
begin
?declare @ord varchar(6),@name varchar(10),@time datetime
?select @ord=[定單號(hào)],@name=[名],@time=[定單日期] from [dbo].[定單],[dbo].[購(gòu)物者]
??where [dbo].[定單].購(gòu)物者號(hào)=[dbo].[購(gòu)物者].購(gòu)物者號(hào) and [定單號(hào)]=@orderid
?print '訂單編號(hào):'+Convert(varchar(12),@time,112)+@orderid+'???訂貨日期:'+Convert(varchar(10),@time,120)+'??訂貨人:'+@name
end
go
execute proc_order '000001'
go
--2、編寫一個(gè)存儲(chǔ)過(guò)程或函數(shù),接收訂單號(hào)、玩具號(hào)、輸出該訂單中該種玩具的銷售金額。
--其中,玩具的銷售金額=玩具單價(jià)*?訂單中玩具的購(gòu)買數(shù)量*折扣率,折扣率的處理規(guī)則如下:
--玩具的銷售金額 ???折扣
------------------------------------------------------------
--[0-30)????????????1.0
--[30-50)?????????????0.9
--[50-100) ?????0.8
--[100以上???????????0.7
create proc proc_dis
(@orderid varchar(6),@wjid varchar(6),@salemoney decimal(8,2) output)
as
begin
?declare @money decimal(8,2);
?select @money=價(jià)格*購(gòu)買數(shù)量 from [dbo].[玩具],[dbo].[定單詳情] where [dbo].[玩具].玩具號(hào)=[dbo].[定單詳情].玩具號(hào)
?and [定單詳情].定單號(hào)=@orderid?and [定單詳情].玩具號(hào)=@wjid
?select @salemoney=@money*
??case when @money<30 then 1.0
????when @money>=30 and 價(jià)格<50 then 0.9
????when @money>=50 and 價(jià)格<100 then 0.8
????when @money>100 then 0.7
??end??from [dbo].[玩具],[dbo].[定單詳情] where [dbo].[玩具].玩具號(hào)=[dbo].[定單詳情].玩具號(hào)
??and [定單詳情].定單號(hào)=@orderid?and [定單詳情].玩具號(hào)=@wjid
end
go
declare @salemoney decimal(8,2)
execute proc_dis '000001','000007',@salemoney output
select @salemoney
go
--3、編寫一個(gè)存儲(chǔ)過(guò)程,接收一個(gè)訂單號(hào),調(diào)用上述存儲(chǔ)過(guò)程打印輸出該訂單下的所有玩具的明細(xì)信息。例如:輸入訂單號(hào)000001,則打印格式如下:

--玩具編號(hào)???玩具名稱?????????????????????????購(gòu)買數(shù)量????單價(jià)?????金額
--------???------------------------------???--------???------???------
--000007?????tie dye kit?工具箱??????????????2??????????20??????36
--000008?????愛麗絲奇境記?????????????????????1??????????15???????15
create proc proc_dtinfo
(@orderid varchar(6))
as
begin
?print '玩具編號(hào)???玩具名稱??????????????????購(gòu)買數(shù)量????單價(jià)?????金額 '
?print '--------???-----------------------???--------???------???------'
?declare @wjid varchar(6),@wjname varchar(20),@num int,@price decimal(8,2)
?declare cur cursor
?for select [玩具].玩具號(hào) from [定單詳情],[玩具] where [定單詳情].玩具號(hào)=[玩具].玩具號(hào) and [定單詳情].定單號(hào)=@orderid
?open cur
??fetch next from cur into @wjid
??while @@fetch_status=0
??begin
???declare @salemoney decimal(8,2)
???execute proc_dis @orderid,@wjid,@salemoney output
???select @wjname=[玩具].玩具名,@num=[定單詳情].購(gòu)買數(shù)量,@price=[玩具].價(jià)格,@salemoney=@salemoney from [定單詳情],[玩具] where [定單詳情].玩具號(hào)=[玩具].玩具號(hào)
???and [定單詳情].定單號(hào)=@orderid?and [玩具].玩具號(hào)=@wjid
???print @wjid+'????'+@wjname+'??????'+str(@num)+'???'+Convert(varchar(10),@price)+'????'+Convert(varchar(10),@salemoney)
???fetch next from cur into @wjid
??end
?close cur
?deallocate cur
end
go
exec proc_dtinfo '000001'
go
--4、編寫一個(gè)存儲(chǔ)過(guò)程,接收一個(gè)訂單號(hào),計(jì)算出該訂單的總金額,并輸出。(總金額=該訂單中所有玩具的銷售金額+訂單的運(yùn)輸費(fèi)用)。
create proc p_sum
(@orderid varchar(6))
as
begin
?declare @ysmoney decimal(8,2),@wjid varchar(6),@sum decimal(8,2)
?set @sum=0;
?select @ysmoney=[定單].運(yùn)輸價(jià)格 from [dbo].[定單] where [定單].定單號(hào)=@orderid
?declare cur cursor
?for select 玩具號(hào) from [dbo].[定單詳情] where [定單詳情].定單號(hào)=@orderid
?open cur
??fetch next from cur into @wjid
??while @@FETCH_STATUS=0
??begin
???declare @salemoney decimal(8,2)
???execute proc_dis @orderid,@wjid,@salemoney output
???set @sum=@sum+@salemoney;
???fetch next from cur into @wjid
??end
??print '總金額:'+ltrim(str(@sum+@ysmoney));
?close cur
?deallocate cur
end
go
exec p_sum '000001'
go
--5、編寫一個(gè)存儲(chǔ)過(guò)程,接收一個(gè)訂單號(hào),打印出該訂單的附加信息(包括:運(yùn)送方式、接受者姓名、接受者地址、郵政編碼和聯(lián)系電話)。
--例如:輸入訂單號(hào)000001,則打印格式如下:
--運(yùn)送方式:標(biāo)準(zhǔn)航運(yùn)?????????????????運(yùn)送金額:6
--接收者姓名:約翰遜
--接收者地址:美國(guó)加利福尼亞州桑德蘭227 海濱大道.
--郵政編碼:94087-1147
--電話號(hào)碼:123-5673??????
create procedure proc_fjinfo
(@orderid varchar(6))
as
begin
?declare @fsm varchar(10),@ysmoney decimal(8,2),@name varchar(20),@gjname varchar(20),@zname varchar(20),@city varchar(20),
?@address varchar(200),@yb varchar(10),@phone varchar(10)
?select @fsm=[運(yùn)輸方式].方式名,@ysmoney=運(yùn)輸價(jià)格,@name=[接受者].名,@gjname=[國(guó)家].國(guó)家名,@zname=[接受者].州,@city=[接受者].城市,
?@address=[接受者].地址,@yb=[接受者].郵編,@phone=[接受者].電話 from [dbo].[定單]
??inner join [dbo].[運(yùn)輸方式] on [dbo].[運(yùn)輸方式].方式號(hào)=[dbo].[定單].運(yùn)輸號(hào)
??inner join [dbo].[接受者] on [dbo].[接受者].定單號(hào)=[dbo].[定單].定單號(hào)
??inner join [dbo].[國(guó)家] on [dbo].[國(guó)家].國(guó)家號(hào)=[接受者].國(guó)家號(hào) and 定單.定單號(hào)=@orderid
?print '運(yùn)送方式:'+@fsm+'????'+'運(yùn)送金額:'+ltrim(str(@ysmoney))
?print '接收者姓名:'+@name
?print '接收者地址:'+rtrim(@gjname)+ltrim(rtrim(@zname))+ltrim(rtrim(@city))+ltrim(@address)
?print '郵政編碼:'+@yb
?print '電話號(hào)碼:'+@phone
end
go
execute proc_fjinfo '000001'
go
--6、編寫一個(gè)存儲(chǔ)過(guò)程,接收一個(gè)訂單號(hào),調(diào)用上述的所有存儲(chǔ)過(guò)程打印出訂單的完整信息。格式如下:
--例如:輸入訂單號(hào)000001,則打印格式如下:
--???????????????????????????????訂 貨 單??????????????????????????????
--======================================================================
--訂單編號(hào):20010520000001???訂貨日期:2001-05-20???訂貨人:拉爾森
--======================================================================
--玩具編號(hào)???玩具名稱?????????????????????????購(gòu)買數(shù)量????單價(jià)?????金額
--------???------------------------------???--------???------???------
--000007?????tie dye kit?工具箱??????????????2??????????20??????36
--000008?????愛麗絲奇境記?????????????????????1??????????15???????15
--======================================================================
--運(yùn)送方式:標(biāo)準(zhǔn)航運(yùn)?????????????????運(yùn)送金額:6
--接收者姓名:約翰遜
--接收者地址:美國(guó)加利福尼亞州桑德蘭227 海濱大道.
--郵政編碼:94087-1147
--電話號(hào)碼:123-5673??????
--======================================================================
--總金額:57
create proc p_detail
(@orderid varchar(6))
as
begin
?print '???????????????????????????????訂 貨 單???????????????????????????????'??????
?print '======================================================================'
?exec proc_order @orderid
?print '======================================================================'
?exec proc_dtinfo @orderid
?print '======================================================================'
?exec proc_fjinfo @orderid
?print '======================================================================'
?exec p_sum @orderid
end
go
exec p_detail '000001'
go
--7、創(chuàng)建一個(gè)函數(shù),根據(jù)所給玩具號(hào)及數(shù)量,計(jì)算應(yīng)支付的金額。
create function fun_pay(@wjid varchar(6),@num int)
returns decimal(8,2)
begin
?return @num*(select [價(jià)格] from [dbo].[玩具] where [玩具號(hào)]=@wjid)
end
go
select dbo.fun_pay('000007',2);
go
--8、創(chuàng)建一個(gè)函數(shù),根據(jù)給定的訂單號(hào),求出該訂單的詳細(xì)購(gòu)物情況(訂單號(hào)、玩具名、數(shù)量)。
create function fun_detinfo(@orderid varchar(6))
returns table
as
?return (select 定單號(hào),玩具名,購(gòu)買數(shù)量??from [dbo].[定單詳情] inner join dbo.玩具 on dbo.玩具.玩具號(hào)=[定單詳情].玩具號(hào)
?????????where 定單號(hào)=@orderid)
go
select * from dbo.fun_detinfo('000001')
go

轉(zhuǎn)載于:https://www.cnblogs.com/zhouqiang0701/p/6438863.html

總結(jié)

以上是生活随笔為你收集整理的函数,游标与存储过程的综合应用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。