SQLUSA

Microsoft SQL Server 2005 Best Practices

How to architect math drill sproc for subtraction?

Execute the following T-SQL script in Query Editor to create and apply an subtraction drills stored procedure:

USE AdventureWorks

GO

 

-- SQL Server stored procedure with parameters

-- SQL random number

CREATE PROC sprocMathTrainerSubtraction(

           @DrillNumber INT,

           @Level       INT,

           @Result      BIT)

AS

  BEGIN

    DECLARE  @Counter SMALLINT

    

    DECLARE  @Drill  TABLE(

                           SEQUENCE INT,

                           [Left]   INT,

                           [Right]  INT,

                           Result   VARCHAR(15)

                           )

    

    SET @Counter = 1

    

    WHILE @Counter <= @DrillNumber

      BEGIN

        INSERT @Drill

        SELECT @Counter,

               @Level * RAND(),

               @Level * RAND(),

               ''

        

        DELETE @Drill

        WHERE  [Left] < [Right]

        

        IF @@ROWCOUNT > 0

          CONTINUE

        

        SET @Counter = @Counter + 1

      END

    

    SELECT convert(VARCHAR,SEQUENCE) + '. ' + convert(VARCHAR,[Left]) +

' - ' + convert(VARCHAR,[Right]) + ' = '

    FROM   @Drill

    

    IF @Result = 1

      BEGIN

        UPDATE @Drill

        SET    Result = convert(VARCHAR,([Left] - [Right]))

        

        SELECT convert(VARCHAR,SEQUENCE) + '. ' + convert(VARCHAR,[Left]) +

' - ' + convert(VARCHAR,[Right]) + ' = ' + Result

        FROM   @Drill

      END

  END

 

GO

 

EXEC sprocMathTrainerSubtraction

  60 ,

  30 ,

  1

 

GO

 

/* Partial results

 

1. 22 - 1 =

2. 25 - 3 =

3. 12 - 12 =

4. 19 - 4 =

5. 28 - 28 =

6. 26 - 15 =

7. 24 - 10 =

8. 8 - 7 =

 

*/

 

SQLUSA - The Best SQL 2005 Training in the World
 
 
SQLUSA.com Home Page