[SQL-码农]建立不输入参数的存储过程的写法

要求:在WHERE中参数上加入Function判定,实现没有传值的情况下无视单元格输出数据;

--格式如下--
exec PROCEDURE @pcid,@year,@month
GO
CREATE procedure ...
@pcid int,
@year int,
@month  int 
as 
Begin
select [..],[..],... 
	from [...]
	where 1=1
	and [...].[Libby_IsNull_RETURN_decimal]('=',year(...),@year)=1
	and [...].[Libby_IsNull_RETURN_decimal]('=',month(...),@month)=1
End
GO


CREATE FUNCTION [Libby_IsNull_RETURN_decimal] 
	(
@TYPE varchar(10),
@O_1 decimal(18,3),
@O_2 decimal(18,3)
)
RETURNS int
AS
BEGIN
	-- 空值为1,不为空判断
	DECLARE @RE_SET AS int
	set @RE_SET=1
	if(@TYPE='=')
		if(@O_1 = @O_2)set @RE_SET=1   else	set @RE_SET=0
	if(@TYPE='>')
		if(@O_1 > @O_2)set @RE_SET=1   else	set @RE_SET=0
	if(@TYPE='>=')
		if(@O_1 >= @O_2)set @RE_SET=1   else	set @RE_SET=0
	if(@TYPE='<')
		if(@O_1 < @O_2)set @RE_SET=1   else	set @RE_SET=0
	if(@TYPE='<=')
		if(@O_1 <= @O_2)set @RE_SET=1   else	set @RE_SET=0

	if(@O_1 is null) set @RE_SET=1
	if(@O_2 is null) set @RE_SET=1

	return  @RE_SET
END
GO


注:Function内我写了当二个判断其一为Null便可通过的写法(以公司的数据结构设计和),请结合自身公司的情况来编写;




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值