拼接SQL的问题

月光下的土豆 2010-11-24 04:52:11


Create proc GetItemCount
@itemID int,
@yearStr nvarchar(40),
@deptStr nvarchar(40)
as
declare @w nvarchar(1000)
declare @Sql nvarchar(2000)
if LEN(@deptStr)=0
Set @w = ''
else
Set @w = ' and YearPlan_UseDept = '''+@deptStr+''''
Set @Sql = 'Select SUM(YearPlan_Amount),SUM(YearPlan_ly),SUM(YearPlan_ls),SUM(YearPlan_lg) From Mpt_YearPlan Where YearPlan_Year = '''+@yearStr+''' and YearPlan_ItemSmlID = '+ @itemID + @w
print(@Sql)
Go
exec GetItemCount 12,'df','bm'


提示
消息 245,级别 16,状态 1,过程 GetItemCount,第 13 行
在将 nvarchar 值 'Select SUM(YearPlan_Amount),SUM(YearPlan_ly),SUM(YearPlan_ls),SUM(YearPlan_lg) From Mpt_YearPlan Where YearPlan_Year = 'df' and YearPlan_ItemSmlID = ' 转换成数据类型 int 时失败。
...全文
109 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
月光下的土豆 2010-11-24
  • 打赏
  • 举报
回复
晕。结错了。一楼的分给二楼了。
下次多补给你
幸运的意外 2010-11-24
  • 打赏
  • 举报
回复
Create proc GetItemCount
@itemID int,
@yearStr nvarchar(40),
@deptStr nvarchar(40)
as
declare @w nvarchar(1000)
declare @Sql nvarchar(2000)
if LEN(@deptStr)=0
Set @w = ''
else
Set @w = ' and YearPlan_UseDept = '''+@deptStr+''''
Set @Sql = 'Select SUM(YearPlan_Amount),SUM(YearPlan_ly),SUM(YearPlan_ls),SUM(YearPlan_lg) From Mpt_YearPlan Where YearPlan_Year = '''+@yearStr+''' and YearPlan_ItemSmlID = '+ cast(@itemID as varchar(10)) + @w
print(@Sql)
Go
exec GetItemCount 12,'df','bm'
nice_dream_li 2010-11-24
  • 打赏
  • 举报
回复

---结果
Select SUM(YearPlan_Amount),SUM(YearPlan_ly),SUM(YearPlan_ls),SUM(YearPlan_lg)
From Mpt_YearPlan Where YearPlan_Year = 'df'
and YearPlan_ItemSmlID = 12 and YearPlan_UseDept = 'bm'

nice_dream_li 2010-11-24
  • 打赏
  • 举报
回复

最后的这个 @itemID + @w 有问题,因为@itemid int 型的,
所以要转换一下 用ltrim(@itemid)或者 CAST 都可以
chen8410 2010-11-24
  • 打赏
  • 举报
回复
exec GetItemCount 12,'df','bm'
第二个参数不能是字母('df'),只能是int型数字
hao1hao2hao3 2010-11-24
  • 打赏
  • 举报
回复
try


Set @Sql = 'Select SUM(YearPlan_Amount),SUM(YearPlan_ly),SUM(YearPlan_ls),SUM(YearPlan_lg) From Mpt_YearPlan Where YearPlan_Year = '''+@yearStr+''' and YearPlan_ItemSmlID = '+ cast(@itemID as varchar(10)) + @w

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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