什么是sqlserver 2005中的动态语句
发布网友
发布时间:2022-04-26 23:12
我来回答
共2个回答
热心网友
时间:2022-06-19 20:54
楼上的说的正确
所谓动态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
例子举的可能不是十分贴切,意思楼主能领会就行。追问如果我定义了一个表名变量@tbl1,按输入的表名打开相应的表,应该用怎样的语句?
追答这个通常没有这么做的,因为表名如果变化的话,表中的字段也应该是不确定的,除非你有很多一样结构的表,或者你在传入表名变量的时候,同时给出列名列表
如果仅仅是举例说明的话:
declare @table varchar(100)
select @table = 'Users' --这个应该是你传进来的
declare @sql varchar(1000)
select @sql = 'select * from ' + @table
exec(@sql)
热心网友
时间:2022-06-19 20:54
动态语句。就是指事前并不明确,需要根据一定条件去临时拼接的SQL了。。。比如你要做个报表。。希望看到的是1月,2月,3月这样的列名。。。那么这时候就需要根据传进来的起始月和结束月来判断有多少列。。从而拼写出SQL