首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

存储过程 int型变量有关问题

2012-12-16 
存储过程 int型变量问题 DECLARE @shuliang intSET @shuliang 0SELECT @shuliang SUM(CONVERT (INT, [y

存储过程 int型变量问题

 DECLARE @shuliang int
  SET @shuliang = 0
  SELECT @shuliang =  SUM(CONVERT (INT, [yingtuishu]))
  FROM   [Faliaominxi]
  WHERE  [liaohao] = @liaohao
         AND [mark] = '0'
         AND [faliaodan] <> @faliaodan


这样的一个存储过程片断,当查询不到符合条件的数据时 将 @shuliang 赋值 0,我用
IF(@shuliang=NULL)
Begin
set @shuliang=0
End
 或者是
IF(@shuliang='')
Begin
set @shuliang=0
End
 都不成功,我更改数据类型后使用
IF(convert(nvarchar(50), @shuliang)=NULL)
Begin
set @shuliang=0
End
 或者是
IF(convert(nvarchar(50), @shuliang)='')
Begin
set @shuliang=0
End
也不行 请高手指点下,当INT型的数据类型,没有获取到任何数据的时候,需要怎么来给变量赋值?
谢谢
[最优解释]
isnull(@shuliang,0)

[其他解释]
 
DECLARE @shuliang int
  SET @shuliang = 0
  SELECT @shuliang =  isnull(SUM(CONVERT (INT, [yingtuishu])),0)--这样转化过后是不会出现''的情况
  FROM   [Faliaominxi]
  WHERE  [liaohao] = @liaohao
         AND [mark] = '0'
         AND [faliaodan] <> @faliaodan


[其他解释]
ISNULL()
[其他解释]
如果真是“没有”那就是null,int是要么有,要么没有,不会存在空字符串
[其他解释]
isnull(@shuliang,0)  直接这样写吗 不对啊
消息 102,级别 15,状态 1,过程 wl_jiecun,第 37 行
'isnull' 附近有语法错误。
[其他解释]
已经搞定 ,谢谢!
[其他解释]
直接写肯定不对拉,另外,昨晚就想问你的。[yingtuishu]这个是什么类型?
[其他解释]
DECLARE @shuliang int
  SET @shuliang = 0
  SELECT @shuliang =  SUM(cast( ISNULL([yingtuishu],0) as INT))
  FROM   [Faliaominxi]
  WHERE  [liaohao] = @liaohao
         AND [mark] = '0'
         AND [faliaodan] <> @faliaodan

[其他解释]
@shuliang=NULL --@shuliang  is NULL

[其他解释]
引用:
直接写肯定不对拉,另外,昨晚就想问你的。[yingtuishu]这个是什么类型?

本来是写成int 的 但是怕出错,直接转成INT 也怕存在影响,SQL里有没有双精度型这样的数据类型啊
[其他解释]
decimal应该算双精度。那你那个convert就可以不要了。转换需要耗时的。
------其他解决方案--------------------


哦 我之前用这个数据类型的时候 一直存在问题 有时候数据写不进 所以一些可能存在小数点的数据,我都是用nvarchar类型  然后在程序里处理。之前没有用存储过程,现在用存储过程了,就要出问题了

热点排行