码迷,mamicode.com
首页 > 数据库 > 详细

SQL学习笔记——关于参数类型的问题

时间:2017-08-13 18:39:39      阅读:191      评论:0      收藏:0      [点我收藏+]

标签:har   用户   images   sts   分享   关于   procedure   根据   object   

在使用存储过程的时候碰到一个问题:

存储过程有一个int类型的参数,可传0,1,2在存储过程中筛选数据,如果传空值则不做筛选。

然而存储过程处理该参数时会把0当作空值来处理,达不到预期效果。

解决方法 :将int型参数换为varchar型参数则不会有此问题

问题示例:

 1 if exists (select * from dbo.sysobjects where id = object_id(N[dbo].[GetUsers]) and OBJECTPROPERTY(id, NIsProcedure) = 1)
 2 drop procedure [dbo].[GetUsers]
 3 GO
 4 
 5 create procedure GetUsers    
 6     @sex int
 7 as
 8 begin    
 9     declare @sqlStr varchar(1000)
10     set @sqlStr = select name, sex from users
11     if (@sex <> ‘‘)
12         set @sqlStr = @sqlStr +  where sex = + CONVERT(varchar(10),@sex)
13     exec(@sqlStr)
14 end 

上面的存储过程是根据参数@sex查找不同性别的用户,sex=0为男性,sex = 1为女性,

但实际上并不符合预期效果,如下图:

技术分享

将参数@sex改为varchar类型即可。

 

 

 

 

convert

SQL学习笔记——关于参数类型的问题

标签:har   用户   images   sts   分享   关于   procedure   根据   object   

原文地址:http://www.cnblogs.com/uu2013/p/7354188.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!