在sqlserver2005中怎样保存自定义的函数在管理器里,它的提示只是保存成一个查询文件?之前一直都有sqlserver2000

解决方案 »

  1.   

    /****** 对象:  UserDefinedFunction [dbo].[FN_GetNewIdCard]    脚本日期: 03/11/2010 15:05:58 ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    ALTER FUNCTION [dbo].[FN_GetNewIdCard](@SFZH VARCHAR(18))
    RETURNS CHAR(18)
    AS 
    BEGIN
        DECLARE @R CHAR(1)
        DECLARE @I INT
        IF LEN(@SFZH) = 15
        BEGIN
            SET @SFZH = STUFF(@SFZH, 7, 0, '19')
        
            SET @i = cast(substring(@SFZH,1,1) as int) * 7
                +cast(substring(@SFZH,2,1) as int) * 9
                +cast(substring(@SFZH,3,1) as int) * 10
                +cast(substring(@SFZH,4,1) as int) * 5
                +cast(substring(@SFZH,5,1) as int) * 8
                +cast(substring(@SFZH,6,1) as int) * 4
                +cast(substring(@SFZH,7,1) as int) * 2
                +cast(substring(@SFZH,8,1) as int) * 1
                +cast(substring(@SFZH,9,1) as int) * 6
                +cast(substring(@SFZH,10,1) as int) * 3
                +cast(substring(@SFZH,11,1) as int) * 7
                +cast(substring(@SFZH,12,1) as int) * 9
                +cast(substring(@SFZH,13,1) as int) * 10
                +cast(substring(@SFZH,14,1) as int) * 5
                +cast(substring(@SFZH,15,1) as int) * 8
                +cast(substring(@SFZH,16,1) as int) * 4 
                +cast(substring(@SFZH,17,1) as int) * 2
            SET @i = @i - @i/11 * 11
            SET @r = (case @i 
                    when 0 then '1' 
                    when 1 then '0' 
                    when 2 then 'X' 
                    when 3 then '9'
                    when 4 then '8' 
                    when 5 then '7' 
                    when 6 then '6' 
                    when 7 then '5'
                    when 8 then '4' 
                    when 9 then '3' 
                    when 10 then '2' 
                    else '/' end)
            SET @SFZH = @SFZH + @R
        END
        RETURN @SFZH
    END
    执行以后说对象名 'FN_GetNewIdCard' 无效。在2000里面都正确啊
      

  2.   

    ALTER FUNCTION [dbo].[FN_GetNewIdCard](@SFZH VARCHAR(18))
    改为
    CREATE FUNCTION [dbo].[FN_GetNewIdCard](@SFZH VARCHAR(18))
      

  3.   


    恭喜,我提议,分就给sf MM好了