Sql Server 存储过程可选参数

原创 2015年07月07日 15:53:54

有如下存储过程


ALTER PROC [dbo].[P_ChannelType] (@CollectBeginDate DATETIME, 
                                  @CollectEndDate   DATETIME,
                                  @Type nvarchar(50)
                                  ) 
AS 
    DECLARE @BeginQueryDate DATETIME 
    DECLARE @EndQueryDate DATETIME 

    SET @BeginQueryDate = Dateadd(day, Datediff(day, '20010101', @CollectBeginDate), '20010101') --获得0SET @EndQueryDate = CONVERT(DATETIME, CONVERT(VARCHAR, @CollectEndDate, 112) , 112) + 1 - 1.0 / 3600 / 24 --获得23:59:59 

    SELECT  a.externalProduct ,
            c.GameChannelName ,
            b.ChannelAccount,
            a.externalProduct,
            '增加' Property,
            SUM(a.num * a.faceValue * ISNULL(b.Discount,1)) AS [Money]
            FROM externalsystempurchaseorder a 
          JOIN dbo.ChannelAccount b ON a.systemAccount = b.ChannelAccount
          JOIN dbo.GameChannel c ON a.systemId = c.GameChannelID
    WHERE purchaseTime >= @CollectBeginDate AND purchaseTime <= @CollectEndDate
          and (@Type is NULL or a.externalProduct = @Type)
    GROUP BY a.externalProduct ,
            a.num ,
            a.faceValue ,
            a.disCount ,
            c.GameChannelName ,
            b.ChannelAccount,
            a.externalProduct

但@Type是一个可选参数,不作为查询条件的时候就给Null
上面关键的一句是

and (@Type is NULL or a.externalProduct = @Type)

就是说当@Type有值的时候,将它作为一个查询条件,没有值的时候就忽略

MSSQL中存储过程的可选参数的定义和使用

可选参数的存在,可以极大的降低代码的重复冗余。在数据库开发中,也是如此。现在针对MSSQL中存储过程的可选参数的定义和使用进行基本的介绍,留作备忘。...
  • hjnth
  • hjnth
  • 2016年05月08日 10:42
  • 2645

MSSQL中存储过程的可选参数的定义和使用_SQL高亮显示

编辑日志: 160508创建 160530优化添加:显式传参 160916SQL语句高亮显示、格式优化 可选参数的存在,可以极大的降低代码的重复冗余。在数据库开发中,也是如此。现在针对MSSQL...
  • hjnth
  • hjnth
  • 2016年09月16日 10:56
  • 905

SQL 之 存储过程、参数和函数

存储过程和参数 区别于之前的用单独一条语句检索数据,现在把多条语句保存到一个叫存储过程的单独对象中。   使用存储过程的原因: 1. 把多条SQL语句保存到单独的过程中 2. 把参数和SQL语句结合使...
  • ForestRound
  • ForestRound
  • 2016年10月06日 19:04
  • 1181

Sql Server 存储过程可选参数

有如下存储过程 ALTER PROC [dbo].[P_ChannelType] (@CollectBeginDate DATETIME, ...
  • lee576
  • lee576
  • 2015年07月07日 15:53
  • 2862

SQL中in参数化的用法

  • 2015年05月06日 19:10
  • 18KB
  • 下载

sql server存储过程 以及几个常用案例

转载自http://www.cnblogs.com/hoojo/archive/2011/07/19/2110862.html SQL Server 存储过程 Transact-S...
  • yuliangliang092
  • yuliangliang092
  • 2016年04月23日 10:41
  • 770

sql server 带输入输出参数的分页存储过程(效率最高)

create procedure proc_page_withtopmax ( @pageIndex int,--页索引 @pageSize int,--每页显示数 @pageCount in...
  • kingmax54212008
  • kingmax54212008
  • 2015年07月14日 11:34
  • 5737

SQL Server 性能调优(cpu)

研究cpu压力工具 perfom SQL跟踪 性能视图 cpu相关的wait event Signal wait time SOS_SCHEDULER_YIELD等待 CXPACKET等...
  • dragon_ton
  • dragon_ton
  • 2015年10月22日 09:07
  • 2429

C#4.0 具名参数 和 可选参数

C# 4.0中的可缺省参数 C# 4.0现在对方法,构造器,以及索引器支持使用可缺省的参数(注:VB支持可缺省参数可是有年头了)。 当参数的默认值作为声明的一部分被指定的时候,参数就是可缺省的。例...
  • haitaoDoit
  • haitaoDoit
  • 2014年12月26日 12:16
  • 4625

SQL Server 优化存储过程的方法

SQL Server 优化存储过程 性能调优
  • Lisliefor
  • Lisliefor
  • 2011年07月18日 15:33
  • 4277
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Sql Server 存储过程可选参数
举报原因:
原因补充:

(最多只允许输入30个字)