日期:2014-05-18 浏览次数:20583 次
alter procedure [dbo].[plp_elpoot001_ok]( @tlpsofc01 nvarchar(20)) as declare @sql nvarchar(1000) declare @tsyitmp nvarchar(50) begin set @tsyitmp=(select tlpsofc11 from tlpsofc where tlpsofc01=@tlpsofc01) set @sql='update a set a.' set @sql=@sql+@tsyitmp set @sql=@sql+' =b.tlpsofd06 from tsyi a,tlpsofd b where b.tlpsofd02=a.tsyi01 and a.tsyi01 in(select tlpsofd02 from tlpsofd where tlpsofd01= ' set @sql=@sql+ @tlpsofc01 +')' exec( @sql) end 调试后得到的sql是: update a set a.tsyi40 =b.tlpsofd06 from tsyi a,tlpsofd b where b.tlpsofd02=a.tsyi01 and a.tsyi01 in(select tlpsofd02 from tlpsofd where tlpsofd01=CCG20120408001 ) 我想得到: update a set a.tsyi40 =b.tlpsofd06 from tsyi a,tlpsofd b where b.tlpsofd02=a.tsyi01 and a.tsyi01 in(select tlpsofd02 from tlpsofd where tlpsofd01='CCG20120408001' ) 也就是最后那个where参数要加上引号.
declare @tlpsofc01 varchar(20) set @tlpsofc01='CCG20120408001' select 'select * from tablename where tlpsofc01='+@tlpsofc01 /* select * from tablename where tlpsofc01=CCG20120408001 */ select 'select * from tablename where tlpsofc01='+''''+@tlpsofc01+'''' /* select * from tablename where tlpsofc01='CCG20120408001' */
------解决方案--------------------
set @sql='update a set a.' set @sql=@sql+@tsyitmp set @sql=@sql+' =b.tlpsofd06 from tsyi a,tlpsofd b where b.tlpsofd02=a.tsyi01 and a.tsyi01 in(select tlpsofd02 from tlpsofd where tlpsofd01= ''' set @sql=@sql+ @tlpsofc01 +''')'