通常我们会使用exec这个函数来实现一些动态的功能,因为它执行的一个字符串语句,可以通过在字符串中添加变量来实现动态的执行语句。例如:
exec( ‘ insert into tbl_back(costdept,sumtotalwork1,totalmoney1)’+
‘ select costdept,sum(sumtotalwork) as sumtotalwork,sum(totalmoney) as totalmoney ‘+
‘ from Rpt_WorkCostYear where
calmonth=”’+@month1+””+’
and ‘+ @conditionstr+
‘ group by costdept’+
‘ order by costdept’)
[@more@]
可以通过对局部变量@month1和@conditionstr的动态赋值来实现语句的动态执行。但是这样书写的时候,往往没有办法利用到查询分析器的可以自动让关键字以不同颜色显示的这一功能来进行输入时的语法判定。因为字符串统统以红色显示,这样书写时很容易错写关键字,一个小技巧可以避免这样尴尬——在编写时这样写:exec(” insert into ……即在字符串开始的界定符“’”之前再加一个“’”以抵消掉字符串界定,这样的话后面的书写就仍然可以利用查询分析器的语法检测功能了,最终完成时再去掉那个多加的“’”即可。
在SQL中使用除法的时候要特别小心,当除