44 lines
637 B
Transact-SQL
44 lines
637 B
Transact-SQL
CREATE FUNCTION gcd (
|
|
@ui INT,
|
|
@vi INT
|
|
) RETURNS INT
|
|
|
|
AS
|
|
|
|
BEGIN
|
|
DECLARE @t INT
|
|
DECLARE @u INT
|
|
DECLARE @v INT
|
|
|
|
SET @u = @ui
|
|
SET @v = @vi
|
|
|
|
WHILE @v > 0
|
|
BEGIN
|
|
SET @t = @u;
|
|
SET @u = @v;
|
|
SET @v = @t % @v;
|
|
END;
|
|
RETURN abs( @u );
|
|
END
|
|
|
|
GO
|
|
|
|
CREATE TABLE tbl (
|
|
u INT,
|
|
v INT
|
|
);
|
|
|
|
INSERT INTO tbl ( u, v ) VALUES ( 20, 50 );
|
|
INSERT INTO tbl ( u, v ) VALUES ( 21, 50 );
|
|
INSERT INTO tbl ( u, v ) VALUES ( 21, 51 );
|
|
INSERT INTO tbl ( u, v ) VALUES ( 22, 50 );
|
|
INSERT INTO tbl ( u, v ) VALUES ( 22, 55 );
|
|
|
|
SELECT u, v, dbo.gcd ( u, v )
|
|
FROM tbl;
|
|
|
|
DROP TABLE tbl;
|
|
|
|
DROP FUNCTION gcd;
|