第 1 頁(yè):?jiǎn)芜x題 |
第 4 頁(yè):應(yīng)用題 |
第 6 頁(yè):設(shè)計(jì)與應(yīng)用題 |
48設(shè)有商品表(商品號(hào),商品名,單價(jià))和銷售表(銷售單據(jù)號(hào),商品號(hào),銷售時(shí)間,銷售數(shù)量,銷售單價(jià))。其中,商品號(hào)代表一類商品,商品號(hào)、單價(jià)、銷售數(shù)量和銷售單價(jià)均為整型。請(qǐng)編寫查詢某年某商品的銷售總毛利的存儲(chǔ)過(guò)程,毛利=銷售數(shù)量x(銷售單價(jià)一單價(jià))。要求商品號(hào)和年份為輸入?yún)?shù),總毛利用輸出參數(shù)返回。(10分)
參考解析:存儲(chǔ)過(guò)程是由PL/SQL語(yǔ)句書寫的過(guò)程,這個(gè)過(guò)程經(jīng)編譯和優(yōu)化后存儲(chǔ)在數(shù)據(jù)庫(kù)服務(wù)器中,使用時(shí)只要調(diào)用即可。使用存儲(chǔ)過(guò)程具有以下優(yōu)點(diǎn):其已經(jīng)編譯和優(yōu)化過(guò)了,所以運(yùn)行效率高,提供了在服務(wù)器端快速執(zhí)行SQL語(yǔ)句的有效途徑;存儲(chǔ)過(guò)程降低了客戶端和服務(wù)器之間的通信量;方便實(shí)施企業(yè)規(guī)則,當(dāng)企業(yè)規(guī)則發(fā)生變化時(shí)只要修改存儲(chǔ)過(guò)程,而無(wú)需修改其他應(yīng)用程序。創(chuàng)建存儲(chǔ)過(guò)程:
create procedure過(guò)程名
@[參數(shù)名][類型],@[參數(shù)名][類型]/*過(guò)程首部*/
As
Declare/*as下面對(duì)應(yīng)的塊為過(guò)程體*/
begin
end
如上所示,存儲(chǔ)過(guò)程包括過(guò)程首部和過(guò)程體。過(guò)程名是數(shù)據(jù)庫(kù)服務(wù)器合法的對(duì)象標(biāo)識(shí);參數(shù)列表:用名字來(lái)標(biāo)識(shí)調(diào)用時(shí)給出的參數(shù)值,必須指定值的數(shù)據(jù)類型。參數(shù)可以是輸人參數(shù)或輸出參數(shù),默認(rèn)為輸人參數(shù)。
【參考答案】
CREATE PROCEDURE PRODUCT@商品號(hào)int,@年份int,@毛利int output
AS
DECLARE
@某商品銷售量int,@某商品進(jìn)價(jià)int,@某商品銷售單價(jià)int/*中間變量定義:*/
BEGIN
Select@某商品進(jìn)價(jià)=單價(jià)from商品表where@商品號(hào)=商品號(hào)
Select@某商品銷售單價(jià)=銷售單價(jià),@某商品銷售量=count(*)from銷售表where
@商品號(hào)=商品號(hào)and銷售時(shí)間=@年份
IF@某商品進(jìn)價(jià)is NULL THEN/木判斷該商品是否存在*/
ROLLBACK;
RETURN;
END IF
IF@某商品銷售單價(jià)is NULL THEN/*判斷該兩晶是否可賣*/
ROLLBACK;
RETURN;
END IF
SET@毛利=(@某商品銷售單價(jià)-@某商品進(jìn)價(jià))*@某商品銷售量
GO
相關(guān)推薦:
2015計(jì)算機(jī)三級(jí)《數(shù)據(jù)庫(kù)》上機(jī)試題及答案匯總
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |