十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
set @flag3=@flag3+1;
专注于为中小企业提供成都网站设计、网站制作服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业乾安免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了近千家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
set @temp1=DATEADD(M,1,@temp1);
set @temp3=@temp1;
在你循环中赋值的语句,你是想每次循环赋不同的时间,但是在你用exec调用时,只能传入最后计算好的唯一的值,这样可能就查询不到数据了吧,不然你拼接成字符串吧
因为表名是根据月份来创建的,所以创建视图需要利用参数作为表名进行查询
可以再加一个语句判断表是否存在
楼上的说的正确
所谓动态sql语句,就是根据实际情况拼接出的语句
比如有个多条件查询,用户可以选择用名称或者ID来查询:
select * from tableName where id = 100
select * from tableName where name = '张三'
但是我们并不知道用户会用哪个查询条件,这个时候就会用到动态sql
假设@id,@name这两个是取得的用户录入信息
declare @sql varchar(1000)
select @sql = 'select * from tableName where 1=1 '
if @id 0 --如果用户选择了id
select @sql = @sql + ' id = ' + convert(varchar(5),@id)
if @name '' --如果用户在名称栏填写了内容
select @sql = @sql + ' name = ''' + @name + ''''
exec(@sql) --执行最终的sql
例子举的可能不是十分贴切,意思楼主能领会就行。