declare @cou as int; 
use @DataBase
SELECT @cou=count(*) FROM CurrentStock  WHERE cWhCode=@CKBH and  cInvCode=@wlbmIF(@cou>0)
...

解决方案 »

  1.   

    SET @sSql='  declare @cou as int   SELECT @cou=count(*) FROM  '+@DataBase+' ..CurrentStock  WHERE cWhCode='''+@CKBH+''' and  cInvCode='''+@wlbm+''''
    exec(@sSql)
    IF(@cou>0)
    ...
      

  2.   

    declare @cou as int 把這個放到裡面或者用 sp_executesql
      

  3.   

    declare @cou as int; 
    SET @sSql ='SELECT @cou=count(*) FROM  '+@DataBase+' ..CurrentStock  WHERE cWhCode='''+@CKBH+''' and  cInvCode='''+@wlbm+''''
    exec sp_executesql @sSql,N'@cou SYSNAME OUT', @cou OUT
    IF(@cou>0)
      

  4.   

    declare @cou as int
    declare @sSql nvarchar(100)SET @sSql='SELECT @cou=count(*) FROM  '+@DataBase+' ..CurrentStock  WHERE cWhCode='''+@CKBH+''' and  cInvCode='''+@wlbm+''''
    execute sp_executesql @sSql,N'@cou int out',@cou out   ---这里面的@sSql 一定要是nvarchar类型
    print @cou
      

  5.   

    zcyan666(ailenny)  的我试了
    提示在存储过程中不能用use 数据库语句yrwx001() 的方法提示没有声明变量@cou
    估计是在判断语句处不能调用字符串中声明的变量
    使用 sp_executesql  这个方法还没用过!!!
      

  6.   

    LS  simonhehe(猩猩无罪) 的办法很好,不过有个地方有笔误改一改
    exec sp_executesql @sSql,N'@cou int OUT', @cou OUT
      

  7.   

    还有个问题
    就是下面的语句declare @wlbm varchar(20),@CKBH varchar(10) ,@kcsl as real
    SET @sSql='UPDATE  '+@DataBase+' ..CurrentStock SET iQuantity= iQuantity+'@kcsl+'   WHERE cWhCode='+@CKBH+' and  cInvCode='+@wlbm+''exec(@sSql)
    运行时提示@kcsl由VARCHAR 转换为real时失败
    请问怎么解决
      

  8.   

    楼主的第一个问题也可以用 simonhehe(猩猩无罪) 的方法解决
    第二个问题也可以用 simonhehe(猩猩无罪) 的方法解决
    楼主可以看看sql帮助中 sp_executesql的用法具体如下:
    declare @wlbm varchar(20),@CKBH varchar(10) ,@kcsl as real
    SET @sSql='UPDATE  '+@DataBase+' ..CurrentStock SET iQuantity= iQuantity+@kcsls    WHERE cWhCode=@CKBHs and  cInvCode=@wlbms'
    print @sSql
    execute sp_executesql @sSql,N'@wlbms varchar(20),@CKBHs varchar(10) ,@kcsls as real',@wlbms=@wlbm,@CKBHs=@CKBH ,@kcsls=@kcsl