存储过程输入参数的值

客户端,服务器都需要统计部门的销售量,客户端安装在各个部门,每个部门只能看到自己部门的销售量,而服务器安装在配送中心,需要统计所有部门的销售量。所以要设计一个存储过程,输入时间参数和部门编号参数。
现在遇到个问题就是如何输入一个编号参数的值让符合的数据全部显示出来。查阅网上的资料,现在得到两种方法。
第一种是用if语句。
CREATE PROCEDURE [dbo].[www]
@time datetime,
@m_id int --状态为空则查全部
AS
’若要确定表达式是否为 NULL,请使用 IS NULL 或 IS NOT NULL,而不要使用比较运算符,如 = 或 !=。如果某‘个参数为 NULL 或两个参数都为 NULL,则比较运算符将返回 UNKNOWN。
 IF   (@m_id   IS   NOT   NULL)
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

    SELECT msbmc,hwm,ssts,ssje,time1,dtb.mid

from dtb join jsb on dtb.jid = jsb.jid
         join hwzl on dtb.hid=hwzl.hid
        join msbzl on dtb.mid=msbzl.mid
where convert(varchar(20),time1,112)=convert (varchar(20),@time,112)
and dtb.mid =@m_id
end
else
begin
    SELECT msbmc,hwm,ssts,ssje,time1,dtb.mid
from dtb join jsb on dtb.jid = jsb.jid
         join hwzl on dtb.hid=hwzl.hid
        join msbzl on dtb.mid=msbzl.mid
where convert(varchar(20),time1,112)=convert (varchar(20),@time,112)

END
执行语句:exec www '2008-05-23',null
null,是空值,是不存在或不确定的值   '',是指空字符,因此用‘’会不显示任何数据,要想查全部不能用‘’,要用null

第二种是把mid的数据类型转换为字符型后用%通配符。
%:匹配包含零个或多个字符的任意字符串。该通配符既可以用作前缀也可以用作后缀。
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
CREATE PROCEDURE [dbo].[CReport1]
@time datetime,
@m_id varchar(20)
AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

    SELECT msbmc,hwm,ssts,ssje,time1,dtb.mid

     From dtb join jsb on dtb.jid = jsb.jid
         join hwzl on dtb.hid=hwzl.hid
        join msbzl on dtb.mid=msbzl.mid
where convert(varchar(20),time1,112)=convert (varchar(20),@time,112)
and CAST(dtb.mid as varchar) like cast (@m_id as varchar )

END

执行语句:exec www '2008-05-23','%'
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值