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

跨数据库查询的有关问题,数据库名使用变量

2012-02-08 
跨数据库查询的问题,数据库名使用变量我要在数据库dataA中修改数据库dataB的表table1数据,存储过程中的语

跨数据库查询的问题,数据库名使用变量
我要在数据库dataA中修改数据库dataB的表table1数据,
存储过程中的语句如下:
declare   @cou   as   int;   SELECT   @cou=count(*)   FROM   @DataBase..CurrentStock     WHERE   cWhCode=@CKBH   and     cInvCode=@wlbm
IF(@cou> 0)
...
运行时提示 '. '附近有语法错误
请问@DataBase..CurrentStock该怎么表达
其中@DataBase表示一个数据库名字,
我将上面的语句放到一个字符变量中可以实现查找的功能,
declare   @cou   as   int;  
SET   @sSql= 'SELECT   @cou=count(*)   FROM     '+@DataBase+ '   ..CurrentStock     WHERE   cWhCode= ' ' '+@CKBH+ ' ' '   and     cInvCode= ' ' '+@wlbm+ ' ' ' '
exec(@sSql)
IF(@cou> 0)
提示没有声明变量@cou
望哪位大侠可以帮忙解决
急!!!


[解决办法]
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)
[解决办法]
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
[解决办法]
LS simonhehe(猩猩无罪) 的办法很好,不过有个地方有笔误

改一改
exec sp_executesql @sSql,N '@cou int OUT ', @cou OUT

[解决办法]
楼主的第一个问题也可以用 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

热点排行