当前位置: 代码迷 >> Sql Server >> exec 后支持的字符串长度 重发一下,该怎么解决
  详细解决方案

exec 后支持的字符串长度 重发一下,该怎么解决

热度:65   发布时间:2016-04-27 12:26:36.0
exec 后支持的字符串长度 重发一下
SQL code
    declare @result varchar(8000)     -- 保存项目组合的字符串       declare @mysql  varchar(8000)    select @result=''         select @mysql=''       If object_id('tempdb..#xmtmp') is not null drop table #xmtmp       If object_id('tempdb..##tjbb') is not null drop table ##tjbb         Create table #xmtmp (科室名称 varchar(20))        insert into #xmtmp select distinct 执行科室 as 科室名称 from zxks order by 执行科室               select @[email protected]+rtrim(科室名称)+' decimal(18,2),' from #xmtmp        select @mysql='create table #tjbb (医师姓名 varchar(20),[email protected]+'药占比 decimal(18,2),合计 decimal(18,2))'  exec @mysql  go      declare @mysql  nvarchar(4000)  select @mysql=' create table #tjbb (医师姓名 varchar(20),B超室 decimal(18,2),CT室 decimal(18,2),病理科 decimal(18,2),草药房 decimal(18,2),草药房2 decimal(18,2),草药库 decimal(18,2),肠道门诊 decimal(18,2),肠道药房 decimal(18,2),儿保科 decimal(18,2),儿科 decimal(18,2),耳鼻喉科 decimal(18,2),发热门诊 decimal(18,2),放射科 decimal(18,2),妇保门诊 decimal(18,2),妇科 decimal(18,2),肛肠科 decimal(18,2),骨密度室 decimal(18,2),骨伤科 decimal(18,2),骨外科 decimal(18,2),骨质增生科 decimal(18,2),急诊科 decimal(18,2),检验科 decimal(18,2),江西路社区 decimal(18,2),江西路社区药房 decimal(18,2),康复科 decimal(18,2),口腔科 decimal(18,2),临检室 decimal(18,2),麻醉科 decimal(18,2),门诊取血室 decimal(18,2),免疫室 decimal(18,2),内科 decimal(18,2),内科2 decimal(18,2),皮肤科 decimal(18,2),生化室 decimal(18,2),手术室 decimal(18,2),外科 decimal(18,2),胃镜 decimal(18,2),文明里社区 decimal(18,2),文明里社区药房 decimal(18,2),西药房 decimal(18,2),细菌室 decimal(18,2),心电图室 decimal(18,2),心身科 decimal(18,2),血库 decimal(18,2),血栓治疗 decimal(18,2),血透室 decimal(18,2),眼科 decimal(18,2),预防接种科 decimal(18,2),针灸科 decimal(18,2),针灸专家 decimal(18,2),痔瘘科 decimal(18,2),中心药房 decimal(18,2),专家门诊 decimal(18,2),药占比 decimal(18,2),合计 decimal(18,2))'  exec sp_executesql @mysql


其中 [email protected] 和第一段中的一样,结果,第一段代码执行失败,截取字符串了, 第二段执行成功,

------解决方案--------------------
不传递参数时:
exec sp_executesql @mysql

直接写成:

exec (@mysql)
就行了.

可以这样定义:
declare @mysql nvarchar(max)




------解决方案--------------------
exec(@mysql)
  相关解决方案