必须声明标量变量 "@sql"。

想念旧时光 2012-09-05 10:59:52
declare @sql varchar(8000),
@i int ,
@id varchar(50)
set @i=0
set @id='XJD20120904000002'
set @sql= 'select m.MaterielName '
select @i=@i+1,@sql=@sql+ ',sum(case s.SupplierName
when cast( ' +SupplierName+ ' as varchar(100)) then num else 0 end) [action '+cast(@i as varchar(50))+ '] '
from (select distinct SupplierName from dbo.TBA_Supplier) tem
select @sql=@sql+ 'from TPurc_RatioPrice as t,
TPurc_EnquiryList as l,
TBA_Supplier as s,
TBA_Materiel as m
where t.EnquiryListNo=l.EnquiryListNo and
t.SupplierID=s.SupplierID and
l.MaterielCode=m.MaterielCode and
l.EnquiryNo='+@id+'
group by m.MaterielName '
...全文
285 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
想念旧时光 2012-09-05
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
这样可以啊

SQL code


declare @sql varchar(8000),
@i int ,
@id varchar(50)
set @i=0
set @id='XJD20120904000002'
set @sql= 'select m.MaterielName '
select @i=@i+1,@sql=@sql+ ',sum(case s.S……
[/Quote]

一样在执行的时候报“必须声明标量变量 "@sql"。”
  • 打赏
  • 举报
回复
sp_executesql的用法
  • 打赏
  • 举报
回复
exec("select * from table")
缘中人 2012-09-05
  • 打赏
  • 举报
回复
这样可以啊

declare @sql varchar(8000),
@i int ,
@id varchar(50)
set @i=0
set @id='XJD20120904000002'
set @sql= 'select m.MaterielName '
select @i=@i+1,@sql=@sql+ ',sum(case s.SupplierName
when cast( ' +SupplierName+ ' as varchar(100)) then num else 0 end) [action '+cast(@i as varchar(50))+ '] '
from (select distinct SupplierName from dbo.TBA_Supplier) tem
select @sql=@sql+ 'from TPurc_RatioPrice as t,
TPurc_EnquiryList as l,
TBA_Supplier as s,
TBA_Materiel as m
where t.EnquiryListNo=l.EnquiryListNo and
t.SupplierID=s.SupplierID and
l.MaterielCode=m.MaterielCode and
l.EnquiryNo='+@id+'
group by m.MaterielName '

exec(@sql)
robake 2012-09-05
  • 打赏
  • 举报
回复
试试把几个声明都加上declare ,不要偷懒用,
想念旧时光 2012-09-05
  • 打赏
  • 举报
回复
如题,exec(@sql) 的时候提示我必须声明标量变量 "@sql"。
有一年没有碰数据库了,东西都忘记的差不多了,请大家帮我看看错误的所在,谢谢。

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧