/****** 对象: 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里面都正确啊
ALTER FUNCTION [dbo].[FN_GetNewIdCard](@SFZH VARCHAR(18)) 改为 CREATE FUNCTION [dbo].[FN_GetNewIdCard](@SFZH VARCHAR(18))
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里面都正确啊
改为
CREATE FUNCTION [dbo].[FN_GetNewIdCard](@SFZH VARCHAR(18))
恭喜,我提议,分就给sf MM好了