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