none
自动生成存储过程的sql脚本的讨论 RRS feed

  • 常规讨论

  • 原版的脚本请参考: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 的脚本

    2010年8月21日 1:35