Stored Procedures [dbo].[NUMBERCONVERSION]
Properties
PropertyValue
ANSI Nulls OnYes
Quoted Identifier OnYes
Parameters
NameData TypeMax Length (Bytes)Direction
@input_numberint4Out
@baseint4
@result_numberint4Out
SQL Script
CREATE PROCEDURE [dbo].[NUMBERCONVERSION]  
   @input_number int  OUTPUT,
   @base int,
   @result_number int  OUTPUT
AS
   
   /*
   *   Generated by SQL Server Migration Assistant for Oracle.
   *   Contact ora2sql@microsoft.com or visit http://www.microsoft.com/sql/migration for more information.
   */

   BEGIN

      
      /*
      *   SSMA error messages:
      *   O2SS0004: Unparsed SQL [SELECT SUM( input_number * POWER(base, rn -1) ) result into resultIs
      *   FROM
      *   (SELECT instr(num_str, upper(doc.extract('/X/text()').getStringVal()))-1 as input_number, rownum rn, a.base
      *    FROM
      *    (SELECT '0123456789ABCDEF' as num_str,  base, input_number FROM DUAL) a,
      *     TABLE(xmlSequence(extract(XMLType('<DOC>'||
      *     REGEXP_REPLACE(utl_raw.cast_to_varchar2(utl_raw.reverse(utl_raw.cast_to_raw(input_number)))
      *     ,'(.)','<X>\1</X>')||'</DOC>'),'/DOC/X'))) doc
      *   );] cannot be converted.

      
      /-*
      *   This procedure is created to do any number conversion from any base to base 10.
      *   Eg: input_number is 11 and base is 2 the then the result is 3
      *-/
      */



        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
Uses