|
|
|
SSChampion
        
Group: General Forum Members
Last Login: Friday, May 18, 2007 3:36 PM
Points: 10,040,
Visits: 1
|
|
|
|
|
|
Forum Newbie
      
Group: General Forum Members
Last Login: Friday, July 06, 2012 2:23 AM
Points: 6,
Visits: 14
|
|
Thank you for your code. It was very helpful. By the way... I`m looking for a code to view recent T-SQL that was executed. Just like SQL Profiler but I want to incorporate it in my application. Do you know how to do that or where can I find further help ?
Thanks !
Doron.
|
|
|
|
|
SSC Journeyman
      
Group: General Forum Members
Last Login: 2 days ago @ 2:25 AM
Points: 88,
Visits: 245
|
|
Hi, You might like to consider using Euclid's Algorithm to find the Highest Common Factor (Greatest Common Divisor)
CREATE FUNCTION CalculateRatio(@numerator int, @denominator int) RETURNS nvarchar(max) AS BEGIN
declare @ratio nvarchar(max) declare @greatestcommondivisor int declare @x int declare @y int set @x = @numerator set @y = @denominator declare @tmp int
if (@denominator > 0) begin while (@x > 0) begin if @x < @y begin set @tmp = @x set @x = @y set @y = @tmp end set @x = @x % @y end end
set @greatestcommondivisor = @y
if (@numerator = 0 or @denominator = 0 or @greatestcommondivisor = 1) begin set @ratio = convert(nvarchar(max), @numerator) + ':' + convert(nvarchar(max), @denominator) end else begin set @ratio = convert(nvarchar(max), @numerator/@greatestcommondivisor) + ':' + convert(nvarchar(max), @denominator/@greatestcommondivisor) end
return @ratio
END
It returns a result faster than the original (even being lazy and using nvarchar(max)), much faster for larger numbers
cheers
|
|
|
|