日期:2014-05-19  浏览次数:20560 次

非常想見識一下sql高手的厲害
declare   @vExecStr   nvarchar(4000)
set   @vExecStr= ' '
select   @vExecStr=@vExecStr+ 'delete   from   '+name+char(13)   from   sysobjects   where   type= 'u '
print   @vExecStr

請問以上語句代表什么意思?

------解决方案--------------------
清空当前数据库中所有用户表中的数据。
------解决方案--------------------
libin_ftsafe(子陌红尘:当libin告别ftsafe) ( ) 信誉:105 Blog 2007-03-20 11:55:13 得分: 0


清空当前数据库中所有用户表中的数据。



------解决方案--------------------
declare @vExecStr nvarchar(4000)
set @vExecStr= ' '
select @vExecStr=@vExecStr+ 'delete from '+name+char(13) from sysobjects where type= 'u ' --用于生成一系列的delete from tname(实际表名来源于sysobjects系统表)的语句
print @vExecStr
------解决方案--------------------
想删所有用户表~~.....
------解决方案--------------------
有关系的表是搞不掉的....
------解决方案--------------------
--定义字符串
declare @vExecStr nvarchar(4000)
--给字符串赋值
set @vExecStr= ' '
--查询(讲sql语句封装成字符串)
select @vExecStr=@vExecStr+ 'delete from '+name+char(13) from sysobjects where type= 'u '
--输出
print @vExecStr


这种方法便于维护,在多处引用的时候直接修改字符串就行了

^_^
------解决方案--------------------
删除所有用户表的数据
------解决方案--------------------
迭代
------解决方案--------------------
用迭代的方式生成一个大小为4000的字符串,其中内容为删除当前数据库所有的用户表的数据的SQL语句。

如果表太多的话,可能由于字符串不够大而不能涵盖所有的用户表。

------解决方案--------------------
我认为是删除用户数据表里的数据,但如果有外键约束就不能删除数据
个人想法!!!!
------解决方案--------------------
呵呵,实用吗
------解决方案--------------------
bu
------解决方案--------------------
先禁用当前数据库中所有的外键约束,然后再执行你的SQL,就可以清空当前数据库中所有用户表中的数据。
------解决方案--------------------
禁用当前数据库的所有外键约束,再执行你的SQL,就可以清空当前数据库中所有用户表中的数据。

------解决方案--------------------

DECLARE @CUR CURSOR
DECLARE @表名 VARCHAR(100)
DECLARE @字段名 VARCHAR(100)
DECLARE @约束名 VARCHAR(100)
DECLARE @SQL VARCHAR(8000)

--禁用所有外键约束
SET @CUR = CURSOR READ_ONLY
FOR
SELECT TABLE_NAME, COLUMN_NAME, CONSTRAINT_NAME
FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE CONSTRAINT_NAME IN (SELECT CONSTRAINT_NAME FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS)
ORDER BY TABLE_NAME, COLUMN_NAME

OPEN @CUR

FETCH NEXT FROM @CUR INTO @表名, @字段名, @约束名

WHILE (@@FETCH_STATUS = 0)
BEGIN
--禁用约束
SET @SQL = 'ALTER TABLE ' + @表名 + ' NOCHECK CONSTRAINT ' + @约束名
EXEC (@SQL)

FETCH NEXT FROM @CUR INTO @表名,@字段名,@约束名
END

CLOSE @CUR
DEALLOCATE @CUR
------解决方案--------------------
加個條件


declare @vExecStr nvarchar(4000)
set @vExecStr= ' '