sql service的动态sql中包含子查询的问题

csdn_peter 程序员  2015-09-03 04:31:46
declare @F_Name nvarchar(50)--变量(当作字段用)
update #detail set @F_Name=sou.F_Value from
(select monthValue.UsingUnitID,monthValue.EnergyID,monthValue.F_Value from [dbo].[T_RPT_EnergyMonthValue] monthValue
where monthValue.UsingUnitID ='02E646A3-9B51-4C14-A4FF-1D0AF12DAB5F'
and monthValue.EnergyID ='7FC53DB1-B80F-4E2A-B7BE-292818F10D82'
and monthValue.F_Year = 2015 and monthValue.F_Month=7) sou
where sou.UsingUnitID=F_UsingUnitId and sou.EnergyID=F_EnergyId
...全文
127 点赞 收藏 5
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
csdn_peter 2015-09-24
谢谢,处理完了
回复
专注or全面 2015-09-04
楼主你不懂sql的转义符?
declare @F_Name nvarchar(50)
declare @sql nvarchar(max)

set @sql=
'update #detail set'+  @F_Name+'=sou.F_Value from 
(select monthValue.UsingUnitID,monthValue.EnergyID,monthValue.F_Value from [dbo].[T_RPT_EnergyMonthValue] monthValue 
where monthValue.UsingUnitID =''02E646A3-9B51-4C14-A4FF-1D0AF12DAB5F''
and monthValue.EnergyID =''7FC53DB1-B80F-4E2A-B7BE-292818F10D82''
and monthValue.F_Year = 2015 and monthValue.F_Month=7) sou
where sou.UsingUnitID=F_UsingUnitId and sou.EnergyID=F_EnergyId'

exec (@sql)

回复
csdn_peter 2015-09-03
求指教,求指教!
回复
csdn_peter 2015-09-03
把更新这段当作字符串使用? 是这种吗 declare @F_Name nvarchar(50) declare @SQL nvarchar(1000) set @SQL='update #detail set '+@F_Name +'=sou.F_Value from (select monthValue.UsingUnitID,monthValue.EnergyID,monthValue.F_Value from [dbo].[T_RPT_EnergyMonthValue] monthValue where monthValue.UsingUnitID ='+'02E646A3-9B51-4C14-A4FF-1D0AF12DAB5F '+ 'and monthValue.EnergyID ='+'7FC53DB1-B80F-4E2A-B7BE-292818F10D82 '+ 'and monthValue.F_Year = 2015 and monthValue.F_Month=7) sou '+ 'where sou.UsingUnitID=F_UsingUnitId and sou.EnergyID=F_EnergyId' 报错,执行不了 报错消息: 消息 168,级别 15,状态 1,第 54 行 浮点值 '02E646' 超出了计算机表示范围(8 个字节)。 消息 102,级别 15,状态 1,第 54 行 “A3”附近有语法错误。
回复
专注or全面 2015-09-03
拼凑成一个字符串,最后exec(拼凑出来的字符串)
回复
相关推荐
发帖
疑难问题
创建于2007-09-28

2.1w+

社区成员

MS-SQL Server 疑难问题
申请成为版主
帖子事件
创建了帖子
2015-09-03 04:31
社区公告
暂无公告