设有商品表(商品号,商品名,单价)和销售表(销售单据号,商品号,销售时间,销售数量,销售单价)。其中,商品号代表一类商品,商品号、单价、销售数量和销售单价均为整型。请编写查询某年某商品的销售总毛利的存储过程,毛利=销售数量×(销售单价-单价)。要求商品号和

admin2019-07-07  38

问题 设有商品表(商品号,商品名,单价)和销售表(销售单据号,商品号,销售时间,销售数量,销售单价)。其中,商品号代表一类商品,商品号、单价、销售数量和销售单价均为整型。请编写查询某年某商品的销售总毛利的存储过程,毛利=销售数量×(销售单价-单价)。要求商品号和年份为输入参数,总毛利用输出参数返回。

选项

答案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

解析 存储过程是由PL/SQL语句书写的过程,这个过程经编译和优化后存储在数据库服务器中,使用时只要调用即可。使用存储过程具有以下优点:其已经编译和优化过了,所以运行效率高,提供了在服务器端快速执行SQL语句的有效途径;存储过程降低了客户端和服务器之间的通信量;方便实施企业规则,当企业规则发生变化时只要修改存储过程,而无需修改其他应用程序。
创建存储过程:
create procedure 过程名
@[参数名] [类型],@[参数名] [类型]    /*过程首部*/
As
Declare                               /*as下面对应的<PL/SQL>块为过程体*/
begin
……
end
如上所示,存储过程包括过程首部和过程体。过程名是数据库服务器合法的对象标识;参数列表:用名字来标识调用时给出的参数值,必须指定值的数据类型。参数可以是输入参数或输出参数,默认为输入参数。
转载请注明原文地址:https://jikaoti.com/ti/Qn37FFFM
0

最新回复(0)