SQL允许你用EXECUTE执行一个变量中定义的SQL语句,并且允许你在被执行的SQL语句中,再次嵌套入一个变量定义的语句,并且再次在其中用EXECUTE执行它
declare @sqlstr varchar(3000)
set @sqlstr='declare @subsqlstr varchar(1000);'
set @sqlstr=@sqlstr+'set @subsqlstr=''select * from tblproducts'';'
set @sqlstr=@sqlstr+'execute (@subsqlstr)'
execute(@sqlstr)
set @sqlstr='declare @subsqlstr varchar(1000);'
set @sqlstr=@sqlstr+'set @subsqlstr=''select * from tblproducts'';'
set @sqlstr=@sqlstr+'execute (@subsqlstr)'
execute(@sqlstr)
在上面的代码中,@SQL变量中定义的是一组SQL语句,在这组SQL语句中,又定义了一个@SUBSQL变量,在其中存放了SELECT语句,
所以,当系统执行@SQLSTR时,其中定义的变量会被执行,执行的结果是,构造了一组动态执行的SQL语句,将其存入了变量,最后,在EXECUTE中又被执行,这种嵌套的执行,我们就姑且称其为动态执行能力吧
不过,需要相当注意的是:
1,由于在变量中存放语句组,因此,且莫忘记在每一个语句末尾加上分号(分号是SQL一句语句的结束标志)
2,如果在语句中包含变量的赋值,请记住你是在写一个变量赋值语句,因此记住加上单引号将值括起
3,如果你在变量中定义的语句组中要引用字符串常量,请先将单引号替换成两个单引号
所以,当系统执行@SQLSTR时,其中定义的变量会被执行,执行的结果是,构造了一组动态执行的SQL语句,将其存入了变量,最后,在EXECUTE中又被执行,这种嵌套的执行,我们就姑且称其为动态执行能力吧
不过,需要相当注意的是:
1,由于在变量中存放语句组,因此,且莫忘记在每一个语句末尾加上分号(分号是SQL一句语句的结束标志)
2,如果在语句中包含变量的赋值,请记住你是在写一个变量赋值语句,因此记住加上单引号将值括起
3,如果你在变量中定义的语句组中要引用字符串常量,请先将单引号替换成两个单引号
乌龟才背着房子过一辈子