存储过程中bit类型字段参数

EdsionWang 2014-04-17 03:58:24
问题描述如下:
假设T_user有字段registered,类型是bit,表示是否注册过了。写了一个存储过程,如下:

create procedure getData
@registered int
as
begin
select * from T_user where registered = @registered
end


执行存储过程给register赋1时,能查询出结果。即便表中register字段值全为0,也能返回一个空的结果集。但当给参数赋0值时,没有结果集返回。不知道有没有人遇到过这样的问题。@registered 参数弄成bit型也试过了,一样的。
...全文
260 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
EdsionWang 2014-04-17
  • 打赏
  • 举报
回复
引用 3 楼 DBA_Huangzj 的回复:
因为那两个是数值型,''是字符串
问题虽然解决了,可是我还有点疑问。为啥传1进去就没被跳过if判断呢?
EdsionWang 2014-04-17
  • 打赏
  • 举报
回复
引用 4 楼 DBA_Huangzj 的回复:
原来你还没有贴出完整代码,搞死人的呢
老大对不住,整个存储过程变量名起的不忍直视,而且写的有点长。没想到问题会出在判断条件上啊,一时间也忘记sql也能调试啦。谢谢
發糞塗牆 2014-04-17
  • 打赏
  • 举报
回复
原来你还没有贴出完整代码,搞死人的呢
發糞塗牆 2014-04-17
  • 打赏
  • 举报
回复
因为那两个是数值型,''是字符串
EdsionWang 2014-04-17
  • 打赏
  • 举报
回复
引用 1 楼 DBA_Huangzj 的回复:
保持数据类型一致是必须的。 create procedure getData @registered int--bit as begin select * from T_user where registered = @registered end 你调试一下传进去的参数是什么数据
调试后发现问题了。我在存储过程里面还有个判断条件 if @registered != '' begin select * from T_users where registered = @registered end 当给0的时候,直接跳过了。参数设成bit 和int都会这样子
發糞塗牆 2014-04-17
  • 打赏
  • 举报
回复
保持数据类型一致是必须的。 create procedure getData @registered int--bit as begin select * from T_user where registered = @registered end 你调试一下传进去的参数是什么数据

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧