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

哪位高手能给小弟我检查一下,下面这个动态SQL有什么有关问题(待.)

2012-02-03 
谁能给我检查一下,下面这个动态SQL有什么问题(在线等待......)declare@sql1varchar(8000)declare@FBrnoNam

谁能给我检查一下,下面这个动态SQL有什么问题(在线等待......)
declare   @sql1   varchar(8000)
declare     @FBrnoName     varchar(100)
declare   @FdateFrom   datetime
declare   @FdateEnd     datetime
declare   @FAccountNumberFrom   nvarchar(100)
declare   @FAccountNumberEnd   nvarchar(100)
set   @FBrnoName= '实业有限公司 '
set   @FdateFrom= '2007-01-01 '
set   @FdateEnd= '2007-01-31 '
set   @FAccountNumberFrom= '5101.001.001 '
set   @FAccountNumberEnd= '5101.005.002 '

set   @sql1   =   'Update   '+@FBrnoName+ '..t_Voucher   set   FImportID=0   WHERE     FVoucherID   IN(select   DISTINCT   v.FVoucherID  
from   '+@FBrnoName+ '..t_Voucher   v   INNER   JOIN       '+@FBrnoName+ '..t_VoucherEntry     a     ON   v.FVoucherID=a.FVoucherID
  left   outer   join   '+@FBrnoName+ '..   t_Account   b   on   a.FAccountID=b.FAccountID     where   v.Fdate   > =   ' ' '+convert(char(10),@FdateFrom,121)+ ' ' '
And   v.Fdate   <= '+convert(char(10),@FdateEnd,121)+ 'and   b.Fnumber   > =   ' ' '+@FAccountNumberFrom+ ' ' '
And   b.Fnumber   <= ' ' '+@FAccountNumberEnd+ ' ' ') '
EXEC(@sql1)

[解决办法]
print(@sql1) 出来后没有语法错啊.


[解决办法]
declare @sql1 nvarchar(4000)
declare @FBrnoName nvarchar(100)
declare @FdateFrom datetime
declare @FdateEnd datetime
declare @FAccountNumberFrom nvarchar(100)
declare @FAccountNumberEnd nvarchar(100)
set @FBrnoName=N '实业有限公司 '
set @FdateFrom= '2007-01-01 '
set @FdateEnd= '2007-01-31 '
set @FAccountNumberFrom= '5101.001.001 '
set @FAccountNumberEnd= '5101.005.002 '

set @sql1 = 'Update '+@FBrnoName+ '..t_Voucher set FImportID=0 WHERE FVoucherID IN(select DISTINCT v.FVoucherID
from '+@FBrnoName+ '..t_Voucher v INNER JOIN '+@FBrnoName+ '..t_VoucherEntry a ON v.FVoucherID=a.FVoucherID
left outer join '+@FBrnoName+ '.. t_Account b on a.FAccountID=b.FAccountID where v.Fdate > = ' ' '+convert(char(10),@FdateFrom,121)+ ' ' '
And v.Fdate <= ' ' '+convert(char(10),@FdateEnd,121)+ ' ' ' and b.Fnumber > = ' ' '+@FAccountNumberFrom+ ' ' '
And b.Fnumber <= ' ' '+@FAccountNumberEnd+ ' ' ') '
print @sql1
EXEC(@sql1)

[解决办法]
convert(char(10),@FdateEnd,121) 两边少了引号
[解决办法]
declare @sql1 varchar(8000)
declare @FBrnoName varchar(100)
declare @FdateFrom datetime
declare @FdateEnd datetime
declare @FAccountNumberFrom nvarchar(100)
declare @FAccountNumberEnd nvarchar(100)
set @FBrnoName= '实业有限公司 '
set @FdateFrom= '2007-01-01 '
set @FdateEnd= '2007-01-31 '
set @FAccountNumberFrom= '5101.001.001 '
set @FAccountNumberEnd= '5101.005.002 '

set @sql1 = 'Update v set FImportID=0 WHERE FVoucherID IN(select DISTINCT v.FVoucherID
from '+@FBrnoName+ '..t_Voucher v INNER JOIN '+@FBrnoName+ '..t_VoucherEntry a ON v.FVoucherID=a.FVoucherID


left outer join '+@FBrnoName+ '.. t_Account b on a.FAccountID=b.FAccountID where v.Fdate > = ' ' '+convert(char(10),@FdateFrom,121)+ ' ' '
And v.Fdate <= ' ' '+convert(char(10),@FdateEnd,121)+ ' ' ' and b.Fnumber > = ' ' '+@FAccountNumberFrom+ ' ' '
And b.Fnumber <= ' ' '+@FAccountNumberEnd+ ' ' ') '
EXEC(@sql1)

[解决办法]
v.Fdate <= 那裡少了單引號,另外少了空格
[解决办法]
另外,update那裡最好使用別名。

热点排行