原版的脚本请参考:http://hi.baidu.com/hhechen/blog/item/29734edb29b47565d1164e61.html
在sql server 2008下操作,这个脚本有一些错误.
我修改了三个部分:
下面是第一部分
--------清理默认值
create FUNCTION [dbo].[fnCleanDefaultValue](@sDefaultValue varchar(4000))
RETURNS varchar(4000)
AS
BEGIN
RETURN SubString(@sDefaultValue, 2, len(@sDefaultValue)-2)
END
go
下面是第二部分
DEALLOCATE crKeyFields
SET @sProcText = @sProcText + @sKeyFields + @sCRLF
SET @sProcText = @sProcText + 'AS' + @sCRLF
SET @sProcText = @sProcText + @sCRLF
SET @sProcText = @sProcText + 'DELETE FROM' + @sTableName + @sCRLF
SET @sProcText = @sProcText + @sWhereClause
SET @sProcText = @sProcText + @sCRLF
IF @bExecute = 0
SET @sProcText = @sProcText + 'GO' + @sCRLF
PRINT @sProcText
IF @bExecute = 1
EXEC (@sProcText)
go
下面是第三部分
ELSE IF (@nAlternateType = 1) --character and binary
IF(@sTypeName = 'nvarchar')
IF(@nColumnPrecision=-1)
SET @sKeyFields = @sKeyFields + '(MAX)'
ELSE SET @sKeyFields = @sKeyFields + '(' + CAST(@nColumnPrecision AS varchar(4)) + ')'
ELSE SET @sKeyFields = @sKeyFields + '(' + CAST(@nColumnPrecision AS varchar(4)) + ')'
对于第三部分的修改,我有点不能确认,虽然经过了一些测试.
希望大家能讨论一下.
另外如果大家有兴趣可以续写一些生成存储过程的脚本:
如: 生成Select TopX 的脚本