( 1 )有商品表(商品号,商品名,分类,单价),请编写一个实现更改商品单价的存储过程(存储过程名为 pUpdate ),更改规则如下: “ 电脑 ” 类商品降价 10% , “ 电视 ” 类商品降价 6% , “ 冰箱 ” 类商品降价 3% , 其他类商品不降价 。 以商品的分类作为输入参数 , 假设 “ 分类 ” 为字符串类型 , 长度最多为 6 个汉字 。 如果商品表中没有用户指定的分类 , 则用输出参数返回字符串 “ 指定的分类不存在 ” ; 如果用户指定的分类存在,则用输出参数返回字符串 “ 修

题目

( 1 )有商品表(商品号,商品名,分类,单价),请编写一个实现更改商品单价的存储过程(存储过程名为 pUpdate ),更改规则如下: “ 电脑 ” 类商品降价 10% , “ 电视 ” 类商品降价 6% , “ 冰箱 ” 类商品降价 3% , 其他类商品不降价 。 以商品的分类作为输入参数 , 假设 “ 分类 ” 为字符串类型 , 长度最多为 6 个汉字 。 如果商品表中没有用户指定的分类 , 则用输出参数返回字符串 “ 指定的分类不存在 ” ; 如果用户指定的分类存在,则用输出参数返回字符串 “ 修改已成功 ” 。( 10 分)


相似考题
参考答案和解析
正确答案:
更多“( 1 )有商品表(商品号,商品名,分类,单价),请编写一个实现更改商品单价的存储过程(存储过程名为 p ”相关问题
  • 第1题:

    设有商品表(商品编号,商品名,进货单价,销售单价)、销售表(商品编号,销售时间,销售数量)和商品利润表(商品编号,总利润)。设进货单价、销售数量、销售单价和总利润均为整型,商品编号和商品名的类型均为varchar(20)。总利润的默认值为0。请编写完成下列功能的存储过程:根据给定的商品编号修改对应商品的总利润。(10分)


    正确答案:存储过程如下: CREATE PROCEDURE ZLR_UPDATE @SPBH VARCHAR(20) AS DECLARE@JHDJ INT DECLARE@XSDJ INT、 DECLARE@XSSL INT DELARE@ZLRl INT DELARE@ZLR VARCHAR(20) SET@JHDJ=(SELECT进货单价FROM商品 表WHERE商品编号=@SPBH) SET@XSDJ=(SELECT销售单价FROM商品 表WHERE商品编号=@SPBH) SET@XSSIL=(SELECT销售数量FROM商品 表WHERE商品编号=@SPBH) SET@ZLRl=(@XSDJ-@JHDJ)*@XSSL SET@ZLR=CONVERT(VARCHAR@ ZLRl) UPDATE商品利润表SET总利润=@ZLR WHERE商品编号=@SPBH
    存储过程如下: CREATE PROCEDURE ZLR_UPDATE @SPBH VARCHAR(20) AS DECLARE@JHDJ INT DECLARE@XSDJ INT、 DECLARE@XSSL INT DELARE@ZLRl INT DELARE@ZLR VARCHAR(20) SET@JHDJ=(SELECT进货单价FROM商品 表WHERE商品编号=@SPBH) SET@XSDJ=(SELECT销售单价FROM商品 表WHERE商品编号=@SPBH) SET@XSSIL=(SELECT销售数量FROM商品 表WHERE商品编号=@SPBH) SET@ZLRl=(@XSDJ-@JHDJ)*@XSSL SET@ZLR=CONVERT(VARCHAR,@ ZLRl) UPDATE商品利润表SET总利润=@ZLR WHERE商品编号=@SPBH

  • 第2题:

    查询单价最高的商品销售情况,查询结果包括商品号、商品名、销售日期、销售数量和销售金额。正确命令是

    A.SELECT商品.商品号,商品名,销售日期,销售数量,销售数量*单价AS销售金额 FROM商品JOIN销售ON商品.商品号=销售.商品号 WHERE单价=(SELECT MAX(单价)FROM商品)

    B.SELECT商品.商品号,商品名,销售日期,销售数量,销售数量*单价AS销售金额 FROM商品JOIN销售ON商品.商品号=销售.商品号 WHERE单价=MAX(单价)

    C.SELECT商品.商品号,商品名,销售日期,销售数量,销售数量*单价AS销售金额 FROM商品JOIN销售WHERE单价=(SELECT MAX(单价)FROM商品)

    D.SELECT商品.商品号,商品名,销售日期,销售数量,销售数量*单价AS销售金额 FROM商品JOIN销售WHERE单价=MAX(单价)


    正确答案:A
    解析:在指定连接字段时可以用WHERE指定连接条件,也可以用超连接关键字JOIN表示普通连接,即只有满足连接条件的记录才出现在查询结果中,但JOIN后面必须用ON子句指定连接条件,故选项C)和D)是错误的,选项B)中的WHERE语句“单价=MAX(单价)”没有指明MAX(单价)这个最大值来自哪个表,故选A)。

  • 第3题:

    在SQL Server 2008中,设有商品表(商品号,商品名,生产日期,单价,类别)。现经常需要执行下列查询: SELECT 商品号, 商品名, 单价 FROM 商品表 WHERE 类别 IN (′食品′,′家电′) ORDER BY 商品号 现需要在商品表上建立合适的索引来提高该查询的执行效率。下列建立索引的语句,最合适的是( )。

    A.CREATE INDEX Idx1 ON 商品表(类别)

    B.CREATE INDEX Idx1 ON 商品表(商品号,商品名,单价)

    C.CREATE INDEX Idx1 ON 商品表(类别,商品号,INCLUDE (商品名,单价)

    D.CREATE INDEX Idx1 ON 商品表(商品号,INCLUDE (商品名,单价,WHERE 类别 = '食品' OR 类别 = '家电'


    正确答案:D

  • 第4题:

    在SQL Server 2008中,有商品表(商品号,商品名,单价)和销售表(商品号,销售时间,销售价格)。现要限制“销售价格”的取值必须在此商品“单价”的0.6倍到1.5倍范围之内,实现这个约束的正确代码是( )。

    A.CHECK(销售价格BETWEEN单价*0.6 AND单价*1.5)

    B.CHECK(销售价格BETWEEN商品表.单价*0.6 AND商品表.单价*1.5)

    C.CREATE TRIGGER tri_Sales ON销售表FOR INSERT,UPDATEAs IF EXISTS(SELECT*FROM INSERTED a JOIN商品表bON a.商品号=b.商品号WHERE销售价格NOT BETWEEN单价*0.6 AND单价*1.5)ROLLBACK

    D.CREATE TRIGGER tri_ales ON销售表INSTEAD OF INSERT,UPDATE ASIF EXISTS( SELECT冰FROM INSERTED a JOIN商品表bON a.商品号=b.商品号WHERE销售价格NOT BETWEEN单价*0.6 AND单价*=1.5)ROLLBACK


    正确答案:C
    FOR指定触发器只有在引发的SQL语句中指定的操作都已成功执行,并且所有的约束检查也成功完成后才执行触发器,这种触发器称为后触发型触发器。INSTEADOF指定执行触发器而不是执行引发触发器执行SQL语句,从而替代触发语句的操作,称这种触发器为前触发型触发器。

  • 第5题:

    查询商品单价在10到50之间、并且日销售数量高于20的商品名、单价、销售日期和销售数量,查询结果按单价降序。正确命令是

    A.SELECT商品名,单价,销售日期,销售数量FROM商品JOIN销售 WHERE(单价BETWEEN 10 AND 50)AND销售数量>20 ORDER BY单价DESC

    B.SELECT商品名,单价,销售日期,销售数量FROM商品JOIN销售 WHERE(单价BETWEEN 10 AND 50)AND销售数量>20 ORDER BY单价

    C.SELECT商品名,单价,销售日期,销售数量FROM商品,销售 WHERE(单价BETWEEN 10 AND 50)AND销售数量>20 ON商品.商品号=销售.商品号ORDER BY单价

    D.SELECT商品名,单价,销售日期,销售数量FROM商品,销售 WHERE(单价BETWEEN 10 AND 50)AND销售数量>20 AND商品.商品号=销售.商品号ORDER BY单价DESC


    正确答案:D
    解析:按单价降序排列应在ORDER BY后跟DESC短语,因此排除B)和C)选项。选行多表查询时,指定两表关键字进行连接时,JOIN短语必须与ON短语联合使用,故选项A)错误。