Tính giai thừa của số nguyên trong Mssql

Bài này và trong các bài tiếp sau tôi sẽ minh họa cho bạn cách để lập trình với ngôn ngữ lập trình SQL. Bài này minh họa bằng việc tính giai thừa của một số nguyên. (beginner)

Thuật toán thì chắc hẳn bạn đã biết công thức tính giai thừa của số nguyên: N! = 1*2*3*...*(N-1)*N

Để minh họa cho dễ hiểu tôi viết hàm này trong C# như sau:

private long fGiaiThua(int n)
{
    long k = 1;
    int i = 1;
    while (i <= n)
    {
        k = k * i;
        i++;
    }
    return k;
}
Tương ứng là hàm viết trong SQL như sau:
CREATE FUNCTION fGiaiThua(@n int)
RETURNS bigint
AS
BEGIN
    DECLARE @k bigint SET @k=1
    DECLARE @i int SET @i=1
    WHILE @i<=@n
    BEGIN
        SET @k=@k*@i
        SET @i=@i+1
    END
    RETURN @k
END

Giờ tôi sẽ chia bảng và so sảng để bạn thấy lập trình với SQL cũng như ngôn ngữ khác thôi

CSHARP

SQL

Khai báo hàm fGiaiThua: public|privare KieuTraVe TenHam(DanhSachCacBien)
private long fGiaiThua(int n)
Khai báo hàm fGiaiThua: create function TenHam(DanhSachCaBien) returns KieuTraVe
create function fGiaiThua(@n int) returns bigint
Khai báo biến kết quả của hàm:
long k = 1;
Khai báo biến kết quả của hàm:
DECLARE @k bigint SET @k=1 (với SQL2008 DECLARE @k bigint =1)
Dùng vòng lặp:
long k = 1;
int i = 1;
while (i <= n)
{
k = k * i;
i++;
}
Dùng vòng lặp:
DECLARE @k bigint SET @k=1
DECLARE @i int SET @i=1
WHILE @i<=@n
BEGIN
SET @k=@k*@i
SET @i=@i+1
END
Trả về kết quả
return k;
Trả về kết quả
return @k

So sánh giữa hai ngôn ngữ bạn thấy lập trình với SQL cũng không khó nhỉ. Nếu muốn tìm hiểu về lập trình SQL bạn thử viết một hàm bẳng C# sau đó chuyển hàm đó sang SQL. Khi làm được vài ví dụ bạn sẽ quen và có khi thấy thích lập trình trên SQL hơn là trên C#.