这个是执行的SQL语句,其中@str是连接字符串declare @saledate datetime ,
@LocateID varchar(20),               
@locatelevel varchar(20),            
@Areaid varchar(20),                 
@useid varchar(20)                   
declare @str varchar (5000)
set @saledate= '2010-01-09'
set @LocateID =null              
set @locatelevel  =null            
set @Areaid =null               
set @useid = null
set @str='
select  matout.filldate,locate.areaid as areaid,locate.locatelevel as locatelevel,locate.locatetype as locatetype,drp_area.name as areaNM,max(matout.locateid) as locateid,locate.Name ,
sum(matoutlist.qty)as qty,round(sum(matoutlist.total),2)as total,round(S.grandtotal,2)as grandtotal
from matout 
inner join matoutlist on matout.matioid=matoutlist.matioid 
inner join locate on locate.locateid=matout.locateid
inner join drp_area on drp_area.areaid=locate.areaid
Inner Join  (
select Matout.LocateID, sum(matoutlist.total)as grandtotal from matoutlist 
inner join matout on matout.matioid=matoutlist.matioid
-- inner join  locate on matout.locateid=locate.locateid
 where matout.filldate>=dateadd(day,1-datepart(day,'+''''+CONVERT(varchar(10),@saledate,120)+''''+'),'+''''+CONVERT(varchar(10),@saledate,120)+''''+') and matout.filldate<='+''''+CONVERT(varchar(10),@saledate,120)+''''+'
 Group by Matout.LocateID
)  S
        On S.LocateID=Matout.LocateID  
where matout.outtypeid= '+'12'+' and isnull(matout.IsPos,'''')='+'''√'+'''And isNull(MatOut.State,'''')<>'+'''已作废'''+'and matout.filldate='+''''+CONVERT(varchar(10),@saledate,120)+''''+''
if(@LocateID is not null) 
begin
set @str = @str + 'and matout.lcoateid like '+@LocateID +'%'
endif(@locatelevel  is not null)
begin 
set @str = @str + 'and locate.locatelevel= '+@Locatelevel
end
set @str=@str+' group by matout.filldate,locate.areaid,locate.locatelevel,matout.locateid,drp_area.name,locate.name,S.grandtotal,locate.locatetype'
print @str
exec @str 
执行后,SQL提示:
服务器: 消息 203,级别 16,状态 2,行 41
名称 '
select  matout.filldate,locate.areaid as areaid,locate.locatelevel as locatelevel,locate.locatetype as locatetype,drp_area.name as areaNM,max(matout.locateid) as locateid,locate.Name ,
sum(matoutlist.qty)as qty,round(sum(matoutlist.total),2)as total,round(S.grandtotal,2)as grandtotal
from matout 
inner join matoutlist on matout.matioid=matoutlist.matioid 
inner join locate on locate....下面这个是EXEC里pring出的连接字符串
select  matout.filldate,locate.areaid as areaid,locate.locatelevel as locatelevel,locate.locatetype as locatetype,drp_area.name as areaNM,max(matout.locateid) as locateid,locate.Name ,
sum(matoutlist.qty)as qty,round(sum(matoutlist.total),2)as total,round(S.grandtotal,2)as grandtotal
from matout 
inner join matoutlist on matout.matioid=matoutlist.matioid 
inner join locate on locate.locateid=matout.locateid
inner join drp_area on drp_area.areaid=locate.areaid
Inner Join  (
select Matout.LocateID, sum(matoutlist.total)as grandtotal from matoutlist 
inner join matout on matout.matioid=matoutlist.matioid
-- inner join  locate on matout.locateid=locate.locateid
 where matout.filldate>=dateadd(day,1-datepart(day,'2010-01-09'),'2010-01-09') and matout.filldate<='2010-01-09'
 Group by Matout.LocateID
)  S
        On S.LocateID=Matout.LocateID  
where matout.outtypeid= 12 and isnull(matout.IsPos,'')='√'And isNull(MatOut.State,'')<>'已作废'and matout.filldate='2010-01-09' group by matout.filldate,locate.areaid,locate.locatelevel,matout.locateid,drp_area.name,locate.name,S.grandtotal,locate.locatetype这条语句放在查询分析器里是可以执行,并且可以得到结果的,为什么EXEC执行这个连接字符串会不成功呢?是不是EXEC对执行的连接字符串有限制?