由存储过程谈“配角”

发表于:2012-7-18 09:46  作者:wangboxian   来源:51Testing软件测试网采编

字体: | 上一篇 | 下一篇 |我要投稿 | 推荐标签:

  这样的话执行出来的结果是这样的:

SELECT TeacherID as 教师编号,Nameas 教师姓名,GradeName as 所属年级,cardNo as 卡号,cashas 卡内余额,realName as 管理员,OpenTime as 开卡时间,stateas 状态,telephone as 联系电话FROM view_CardDetail WHERE 1=1and  cardNo ='+@cardNo+'

  必然条件在这里充当了桥梁的作用,虽然我们没有“1=1“的需求,但是它的存在却恰好解决了两者互不相容的尴尬局面。

  受上面的启发,下面的情况是这样解决的:

  需要根据教师编号和起始日期查询教师的消费记录情况,两个条件的存在情况各自随便。

  存储过程代码如下:

CREATE PROCEDURE [dbo].[procConsumeByMore]
 @TeacherID varchar(50),
 @TimeStart datetime,
 @TimeEnd datetime
AS
DECLARE @sql varchar(1000)
SET @sql='SELECT TeacherID as 教师编号,Name as 教师姓名,orderID as 订单编号,adultNum as 成人数量,childNum as 儿童数量,consumeCash as 消费金额,consumeTime as 消费时间,userID as 管理员编号,realName as 管理员姓名FROM view_consumeDetail WHERE 1=1 '


IF(@TeacherID <>'')
BEGIN
SET @sql=@sql+'and  TeacherID ='''+@TeacherID+''''
END

IF( @TimeStart<>null and @TimeEnd<>null)
BEGIN
SET @sql=@sql+'and  consumeTime between '''+@TimeStart +''' and '''+@TimeEnd+''''
END

exec(@sql)

  这里当@TimeStart和@TimeEnd为空的时候,空字符串不能转换成日期类型,这时候假如两个变量为空,我可以给他们赋一个完全的值:

exec procConsumeByMore '', '1799-01-01','9999-12-29'

  如上面的代码就可以选择出所有的消费记录了。

  上面两件事情中必然事件这个配角起了不可忽视的作用,然而必然事件却不是我们在查询过程中需要的条件。

  生活中配角并不意味着无趣和呆板,配角一样可以灵动,只是它把对别人的善意放在第一位,不把张扬作为表达自己的方式。‘上善若水,水善利万物而不争’,但是水又无处不在,其实就是这样一种状态。创造一个最好的配角,并不比创造一个主角容易。


22/2<12

评 论

论坛新帖

顶部 底部


建议使用IE 6.0以上浏览器,800×600以上分辨率,法律顾问:上海瀛东律师事务所 张楠律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2020, 沪ICP备05003035号
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪公网安备 31010102002173号

51Testing官方微信

51Testing官方微博

扫一扫 测试知识全知道