很怪异的一个问题,为什么存储过程中的小于判断不执行

icoding 2008-04-25 04:12:49
CREATE PROCEDURE test AS

declare @balanceValid float,@quantityValid float,@quantity float,@price float

set @quantityValid=100

set @price = 22.8

select @balanceValid = balanceValid from stocks_user where [id]=1016181

if @balanceValid < @quantity * @price *(1-0)begin
print @balanceValid
end
GO

-----------------------------------------
数据库里1016181这条记录的 balanceValid 值为负数,但是没有打印 @balanceValid,如果写成<>就会打印@balanceValid
...全文
62 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
jenhon 2008-05-01
  • 打赏
  • 举报
回复
建议最后
/*if @balanceValid < @quantity * @price *(1-0)begin */
print @balanceValid
print @quantity * @price *(1-0)

看看不就知道为什么了?
icoding 2008-04-25
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 ljsql 的回复:]
if @balanceValid < @quantity * @price *(1-0)begin

@quantity 这个你没有负值
[/Quote]

我写的时候有点错误,实际是有值的
肥胖的柠檬 2008-04-25
  • 打赏
  • 举报
回复
if @balanceValid < @quantity * @price *(1-0)begin

@quantity 这个你没有负值
青锋-SS 2008-04-25
  • 打赏
  • 举报
回复
所以
@quantity * @price *(1-0)
运算的结果也是null,比较的时候肯定出问题.
青锋-SS 2008-04-25
  • 打赏
  • 举报
回复
@quantity没有赋值,默认是空

27,579

社区成员

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

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