新人求解SQL存储过程问题

Aaron_yx 2013-04-08 11:00:10
我写了如下的存储过程:
CREATE PROCEDURE Proc_BB(@SmallRegion varchar(5),@ejfl varchar(5),@msdm varchar(10),@BetweenTime varchar(10),@AndTime varchar(10))

AS
DECLARE @sql varchar(100)
SET @sql=('SELECT sum(sl) 数量,sum(je) 金额 from '+@SmallRegion+'_jxc_xsb as t1 inner join sys_cpdm as t2 on '
+'t1.flh=t2.flh WHERE t2.yjfl="aaa" and
t2.ejfl='+@ejfl+' and t1.msdm='+@msdm+' and t1.rq between '+@BetweenTime+' and '+@AndTime
)
EXEC(@sql)
go
执行EXEC Proc_BB 'bbb','ccc','ddd','2012-01-01','2012-01-30'
提示说:消息 102,级别 15,状态 1,第 1 行
'W' 附近有语法错误。
求各位大神帮忙看看,先谢谢各位了
...全文
110 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Aaron_yx 2013-04-08
  • 打赏
  • 举报
回复
引用 4 楼 hncelfhv 的回复:
DECLARE @sql varchar(100) --这里小了 varchar(max)
谢谢
fa_ge 2013-04-08
  • 打赏
  • 举报
回复
DECLARE @sql varchar(100) 楼主把这个 变量空间放大点, varchar(1000)
超凡 2013-04-08
  • 打赏
  • 举报
回复
DECLARE @sql varchar(100) --这里小了 varchar(max)
Aaron_yx 2013-04-08
  • 打赏
  • 举报
回复
print 输出是这样子的:SELECT sum(sl) 数量,sum(je) 金额 from TCF_jxc_xsb as t1 inner join sys_cpdm as t2 on t1.flh=t2.flh W ,怎么到Where就没执行了
弘恩 2013-04-08
  • 打赏
  • 举报
回复
动态串拼接有问题 print @s 然后,再去执行 简单给你调了一下,你试试 DECLARE @sql varchar(100) SET @sql=('SELECT sum(sl) 数量,sum(je) 金额 from '+@SmallRegion+'_jxc_xsb as t1 inner join sys_cpdm as t2 on ' +'t1.flh=t2.flh WHERE t2.yjfl="aaa" and t2.ejfl='''+@ejfl+''' and t1.msdm='''+@msdm+''' and t1.rq between '''+@BetweenTime+''' and '''+@AndTime +'''' ) EXEC(@sql)
fa_ge 2013-04-08
  • 打赏
  • 举报
回复
print @s 看看,我估计是空格的原因。

34,576

社区成员

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

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