CREATE PROCEDURE [dbo].[NUMBERCONVERSION]
@input_number int OUTPUT,
@base int,
@result_number int OUTPUT
AS
BEGIN
DECLARE @xmlDoc xml
DECLARE @num_str NVARCHAR(max)
DECLARE @resultIs int
DECLARE @string VARCHAR(max)
DECLARE @position int
DECLARE @tempStr VARCHAR(max)
SET @resultIs = 0
SET @tempStr = ''
SET @string=reverse(@input_number)
SET @position = 1
SET @tempStr = '<DOC>'
WHILE @position <= DATALENGTH(@string)
BEGIN
SET @tempStr= @tempStr + '<X>' + SUBSTRING(@string, @position, 1) + '</X>'
SET @position = @position + 1
END
SET @tempStr = @tempStr + '</DOC>'
SET @xmlDoc= CAST(@tempStr as xml)
SELECT @resultIs = SUM( input_number * POWER(base, rn-1) )
FROM
(SELECT charindex( upper( (T.Fields.query('.') ).value('(/X)[1]', 'nvarchar(max)') ) ,'0123456789ABCDEF' )-1
as input_number, @base as base, ROW_NUMBER() OVER(order by (SELECT 0)) as rn
FROM @xmlDoc.nodes('/DOC/X') T(Fields)
) Doc
SET @result_number = @resultIs
PRINT @resultIs
END
GO