declare @cou as int;
use @DataBase
SELECT @cou=count(*) FROM CurrentStock WHERE cWhCode=@CKBH and cInvCode=@wlbmIF(@cou>0)
...
use @DataBase
SELECT @cou=count(*) FROM CurrentStock WHERE cWhCode=@CKBH and cInvCode=@wlbmIF(@cou>0)
...
exec(@sSql)
IF(@cou>0)
...
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)
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
提示在存储过程中不能用use 数据库语句yrwx001() 的方法提示没有声明变量@cou
估计是在判断语句处不能调用字符串中声明的变量
使用 sp_executesql 这个方法还没用过!!!
exec sp_executesql @sSql,N'@cou int OUT', @cou OUT
就是下面的语句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时失败
请问怎么解决
第二个问题也可以用 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