Bu küçük SQL fonksiyonunu Vergi Kimlik No’ların doğru olup olmadığını sorgulamak için kullanabilirsiniz. Kullanım şekli;
IF dbo.FN_VKNO_DOGRUMU(1111111111)=1 PRINT 'DOGRU VERGI KIMLIK NO' ELSE PRINT 'YANLIS VERGI KIMLIK NO'
Bu kodları kullanarak rahatlıkla fonksiyonun C# versiyonunu da hazırlayabilirsiniz.
CREATE FUNCTION [dbo].[FN_VKNO_DOGRUMU](@VKNO VARCHAR(10)) RETURNS BIT BEGIN DECLARE @V_LAST_DIGIT SMALLINT, @V_1 SMALLINT, @V_2 SMALLINT, @V_3 SMALLINT, @V_4 SMALLINT, @V_5 SMALLINT, @V_6 SMALLINT, @V_7 SMALLINT, @V_8 SMALLINT, @V_9 SMALLINT, @V_11 SMALLINT, @V_22 SMALLINT, @V_33 SMALLINT, @V_44 SMALLINT, @V_55 SMALLINT, @V_66 SMALLINT, @V_77 SMALLINT, @V_88 SMALLINT, @V_99 SMALLINT, @TOPLAM SMALLINT, @R Bit -- SET @V_1 = (CAST(SUBSTRING(@VKNO,1,1) AS SMALLINT) + 9) % 10 SET @V_2 = (CAST(SUBSTRING(@VKNO,2,1) AS SMALLINT) + 8) % 10 SET @V_3 = (CAST(SUBSTRING(@VKNO,3,1) AS SMALLINT) + 7) % 10 SET @V_4 = (CAST(SUBSTRING(@VKNO,4,1) AS SMALLINT) + 6) % 10 SET @V_5 = (CAST(SUBSTRING(@VKNO,5,1) AS SMALLINT) + 5) % 10 SET @V_6 = (CAST(SUBSTRING(@VKNO,6,1) AS SMALLINT) + 4) % 10 SET @V_7 = (CAST(SUBSTRING(@VKNO,7,1) AS SMALLINT) + 3) % 10 SET @V_8 = (CAST(SUBSTRING(@VKNO,8,1) AS SMALLINT) + 2) % 10 SET @V_9 = (CAST(SUBSTRING(@VKNO,9,1) AS SMALLINT) + 1) % 10 SET @V_LAST_DIGIT = CAST(SUBSTRING(@VKNO,10,1) AS SMALLINT) -- SET @V_11 = (@V_1 * 512) % 9 SET @V_22 = (@V_2 * 256) % 9 SET @V_33 = (@V_3 * 128) % 9 SET @V_44 = (@V_4 * 64) % 9 SET @V_55 = (@V_5 * 32) % 9 SET @V_66 = (@V_6 * 16) % 9 SET @V_77 = (@V_7 * 8) % 9 SET @V_88 = (@V_8 * 4) % 9 SET @V_99 = (@V_9 * 2) % 9 -- IF @V_1 != 0 AND @V_11 = 0 SET @V_11 = 9 IF @V_2 != 0 AND @V_22 = 0 SET @V_22 = 9 IF @V_3 != 0 AND @V_33 = 0 SET @V_33 = 9 IF @V_4 != 0 AND @V_44 = 0 SET @V_44 = 9 IF @V_5 != 0 AND @V_55 = 0 SET @V_55 = 9 IF @V_6 != 0 AND @V_66 = 0 SET @V_66 = 9 IF @V_7 != 0 AND @V_77 = 0 SET @V_77 = 9 IF @V_8 != 0 AND @V_88 = 0 SET @V_88 = 9 IF @V_9 != 0 AND @V_99 = 0 SET @V_99 = 9 -- SET @TOPLAM = @V_11 + @V_22 + @V_33 + @V_44 + @V_55 + @V_66 + @V_77 + @V_88 + @V_99 IF @TOPLAM %10 =0 BEGIN SET @TOPLAM=0 END ELSE BEGIN SET @TOPLAM = (10 - (@TOPLAM %10)) END -- IF @TOPLAM = @V_LAST_DIGIT SET @R = 1 -- DOĞRU ELSE SET @R = 0 -- YANLIŞ -- RETURN @R -- END

