首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

存储过程中一点语法的有关问题,呀

2012-02-27 
存储过程中一点语法的问题,急呀!SELECTsum(mc)FROMGL_accvouch_qrywhere(iperiod 1andiperiod@imonth)a

存储过程中一点语法的问题,急呀!
SELECT   sum(mc)
FROM   GL_accvouch_qry
where   (iperiod> =1   and   iperiod=@imonth)   and   +   @sql2   +   and   iyear=@iyear   )
其中@imonth,@iyear   分别是年和月的参数
@sql2是一个条件语句
比如可能是   cdeptid   like   '5001% '   and   ccode   like   '1002% '
现在老是抱where     的语句语法错误,该怎么写呀,试了几种,都不行,谢谢了


[解决办法]
变量要动态执行
[解决办法]
问题应该在@sql2这个变量这里,语句不需要动态执行也可以的

你把整个sql语句在查询分析器print出来,看看是否正确,然后再修改
[解决办法]
把不是字符窜类型的变量cast 成字符窜类型,
比如:
'iperiod=@imonth '
写成:
'iperiod= '+cast(@imonth as varchar)+ '
试试.
[解决办法]
exec( 'SELECT sum(mc) FROM GL_accvouch_qry where (iperiod> =1 and iperiod= '+@imonth+ ') and '+ @sql2 + 'and iyear= '+@iyear+ ' ) ')
[解决办法]
lz参考一下吧:

declare @a int
declare @ccode nvarchar(20)
declare @sql nvarchar(800)
set @ccode = N '1=1 ';
set @sql= N 'select @a=sum(mc) /10000
FROM dbo.GL_accvouch_qry
where (iperiod> =1 and iperiod=@imonth) and '+@ccode+ ' and iyear=@iyear '


exec sp_executesql @sql,
N ' @a int out,@imonth int,@iyear int ',@a out,@imonth=3,@iyear=1993

select @a

热点排行