select @SQL=@SQL + ' select ''' + name + ''' as 表名,(select count(*) from ' + name + ') as 数量 union' from sysobjects where type='U'这里是通过sysobjects系统表,因为系统表里的用户表的列为type,'U'表示用户,所以这句动态语句就是用来统计表的数量和用户
因为语句是根据系统表来循环生成的,所以尾句上会存在一个union,所以必须去掉才能执行!
因为语句是根据系统表来循环生成的,所以尾句上会存在一个union,所以必须去掉才能执行!
为什么' select ''' + name + ''' as 表名,select前面为什么要有空格
为什么select count(*) from ' + name + ') 这句话为什么要这么取
set @SQL=@SQL + left(@SQL,len(@SQL)-len('union'))这句话有什么作用
里面的left(@SQL,len(@SQL)-len('union'))去出的结果是什么,怎么知道要取这句话
这句话明显是错误的,sql没有这样的语法
能不能在详细的说明一下
为什么' select ''' + name + ''' as 表名,select前面为什么要有空格--
这个你要看清楚了,前面还有一个变量@sql,select前面的空格是为了和前面的语句作隔断select @SQL=@SQL + ' select ''' + name 为什么select count(*) from ' + name + ') 这句话为什么要这么取
-----
这句话是为了count数量,含义就是我选了一个tablename,然后通过
select count(*) from tablename 可以统计每个表的纪录数,如果我要循环取这些表,需要将tablenam换为一个可循环的变量,就是如上的name
set @SQL=@SQL + left(@SQL,len(@SQL)-len('union'))这句话有什么作用
--
这个你在可以自己做实验
select @sql
set @SQL=@SQL + left(@SQL,len(@SQL)-len('union'))
select @sql--回显一下@sql的值,你就知道怎么变化的了里面的left(@SQL,len(@SQL)-len('union'))去出的结果是什么,怎么知道要取这句话
@command2="sp_spaceused '?'",
@command3= "SELECT count(*) FROM ? "你的这句:
我想知道select count(*) from ' + name + 'from sysobjects where type='U'这句话我单独取出来怎么不好用?
得不到想要的东西,因为你打开 sysobjects 表看看就知道了
exec (@SQL)是什么意思??