Scalar-valued Functions [dbo].[CUSTOMBITAND]
Properties
PropertyValue
ANSI Nulls OnYes
Quoted Identifier OnYes
Parameters
NameData TypeMax Length (Bytes)
@permission1float8
@permission2float8
SQL Script
CREATE FUNCTION dbo.CUSTOMBITAND
(
   /*
   *   SSMA warning messages:
   *   O2SS0356: Conversion from NUMBER datatype can cause data loss.
   */


   @permission1 float(53),
   /*
   *   SSMA warning messages:
   *   O2SS0356: Conversion from NUMBER datatype can cause data loss.
   */


   @permission2 float(53)
)
/*
*   SSMA warning messages:
*   O2SS0356: Conversion from NUMBER datatype can cause data loss.
*/


RETURNS float(53)
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

      DECLARE
         @permission1Char varchar(16),
         @permission2Char varchar(16),
         @temp1 char(1),
         @temp2 char(2),
         @returnNum numeric(1)

      
      /*
      *   The sql bitand function could not be used as the result of 11 bitand 10 will not return 1.
      *   The number we are providing 11 and 10 are not binary number but they are decimal number.  Hence
      *   the need of this function.
      */

      SET @permission1Char = ltrim(rtrim(CAST(abs(isnull(@permission1, 0)) AS varchar(max))))

      SET @permission2Char = ltrim(rtrim(CAST(abs(isnull(@permission2, 0)) AS varchar(max))))

      DECLARE
         @i int

      SET @i = 16

      WHILE @i >= 1
      
         BEGIN

            /*
            *   SSMA warning messages:
            *   O2SS0273: Oracle SUBSTR function and SQL Server substring function may give different results.
            */


            SET @temp1 = isnull(substring(@permission1Char, @i, 1), '0')

            /*
            *   SSMA warning messages:
            *   O2SS0273: Oracle SUBSTR function and SQL Server substring function may give different results.
            */


            SET @temp2 = isnull(substring(@permission2Char, @i, 1), '0')

            /*dbms_output.put_line('temp1 '||temp1 ||' temp2 '||temp2);*/
            IF (@temp1 != @temp2)
               BEGIN

                  SET @returnNum = 1

                  /*dbms_output.put_line('returnNum' ||returnNum);*/
                  RETURN @returnNum

               END

            SET @i = @i - 1

         END

      SET @returnNum = 0

      RETURN @returnNum

   END
GO
Uses