第 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
相关推荐:
北京 | 天津 | 上海 | 江苏 | 山东 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
广东 | 河北 | 湖南 | 广西 | 河南 |
海南 | 湖北 | 四川 | 重庆 | 云南 |
贵州 | 西藏 | 新疆 | 陕西 | 山西 |
宁夏 | 甘肃 | 青海 | 辽宁 | 吉林 |
黑龙江 | 内蒙古 |