执行存储过程出现:"不是有效的标识符。"

来源:互联网 发布:标题怎么优化关键词 编辑:程序博客网 时间:2024/05/16 04:39

在存储过程里执行SQL拼接语句 

delcare @str varchar(8000) 
select @str = 'select t_m.Mid AS mid,t_m.CertificateNO as CertificateNO,t_m.MalePid as MalePid ,
 (select Pname from t_persons where pid = t_m.MalePid) as MalePName,
 t_m.FemalePid as FemalePid ,(select Pname from t_persons where pid = t_m.FemalePid) as FemalePName,
 case when (tr_m.MarriageVenue <> t_m.ReportDeptID and t_m.ReportDeptID like '''+@StatVenue+''') then ''是'' else ''否'' end as IsDepart,
 (select VenueName from t_venues where venueCode = t_m.ReportDeptID) as ReportDeptID,
 case when (t_m.ReportDeptID not like '''+@StatVenue+''' and tr_m.MarriageVenue like '''+@StatVenue+''') then ''是'' else ''否'' end as IsDiffReport ,
 (select MarriageTimesName from c_MarriageTimes where MarriageTimesID=t_m.MaleMarriageTimesID) as MaleMarriageTimesID,
 (select MarriageTimesName from c_MarriageTimes where MarriageTimesID=t_m.FemaleMarriageTimesID) as FemaleMarriageTimesID,
 (select CONVERT(varchar(11) ,t_m.MarriageDate,120)) as MarriageDate,(select CONVERT(varchar(11) ,t_m.ReportDate,120)) as ReportDate,
 (select SettleTypeName from dbo.c_SettleType where SettleTypeID=t_m.SettleTypeID) as SettleTypeID,
 (select MarriageTypeName from dbo.c_MarriageType where MarriageTypeID = t_m.MarriageTypeID) as MarriageTypeID,
 (select CONVERT(varchar(11) ,t_m.EndDate,120)) as EndDate,
 (select EndReasonName from c_MarriageEndReason where EndReasonID=t_m.EndReasonID) as EndReasonID into #marriage_temp
 from t_Marriage as t_m LEFT OUTER JOIN tr_MarriageVenue as tr_m on t_m.mid = tr_m.mid
where ((tr_m.MarriageVenue like '''+@StatVenue+''' and '+str(@ResideType)+' = 1)       
 or (t_m.ReportDeptID like '''+@StatVenue+''' and '+str(@ResideType)+' = 2)        
 or ((t_m.ReportDeptID like '''+@StatVenue+''' or tr_m.MarriageVenue like '''+@StatVenue+''')))'

 print @str
--本地居住--本地上报
 exec @str  --这样会出现异常 :"不是有效的标识符。" 

 应改为 exec(@str)  就可以了.

原创粉丝点击