SQL标量值函数1、求直角三角形两条直角边为任意整数值的斜边边长和三角形面 积。(标量值函数). 2、输入任意一个整数值,如果该值大于20,输出“大于20!",如果 在10与20之间,输出“大于10!",否则输出“小于10!”。(标 量值函数) 3、三个整数输出最大值。(标量值函数) 4、辗转相除法求两个整数的最大公约数。(标量值函数) 5、创建一个内联函数,根据课程名,查询选修该课程的学生的学号、 姓名和分数 医
时间: 2024-02-01 21:13:42 浏览: 24
1、求直角三角形两条直角边为任意整数值的斜边边长和三角形面积。
```
CREATE FUNCTION fn_triangle (@a INT, @b INT)
RETURNS TABLE
AS
RETURN
(
SELECT c = SQRT(@a * @a + @b * @b),
area = @a * @b / 2.0
);
```
可以使用该函数进行查询:
```
SELECT * FROM fn_triangle(3, 4); -- 返回斜边边长5和三角形面积6
```
2、输入任意一个整数值,如果该值大于20,输出“大于20!”,如果在10与20之间,输出“大于10!”,否则输出“小于10!”。
```
CREATE FUNCTION fn_compare (@val INT)
RETURNS VARCHAR(10)
AS
BEGIN
DECLARE @result VARCHAR(10);
IF @val > 20
SET @result = '大于20!';
ELSE IF @val > 10
SET @result = '大于10!';
ELSE
SET @result = '小于10!';
RETURN @result;
END;
```
可以使用该函数进行查询:
```
SELECT dbo.fn_compare(5); -- 返回小于10!
```
3、三个整数输出最大值。
```
CREATE FUNCTION fn_max (@a INT, @b INT, @c INT)
RETURNS INT
AS
BEGIN
DECLARE @max INT;
SET @max = @a;
IF @b > @max
SET @max = @b;
IF @c > @max
SET @max = @c;
RETURN @max;
END;
```
可以使用该函数进行查询:
```
SELECT dbo.fn_max(3, 6, 2); -- 返回6
```
4、辗转相除法求两个整数的最大公约数。
```
CREATE FUNCTION fn_gcd (@a INT, @b INT)
RETURNS INT
AS
BEGIN
DECLARE @r INT;
SET @r = @a % @b;
WHILE @r <> 0
BEGIN
SET @a = @b;
SET @b = @r;
SET @r = @a % @b;
END;
RETURN @b;
END;
```
可以使用该函数进行查询:
```
SELECT dbo.fn_gcd(18, 12); -- 返回6
```
5、创建一个内联函数,根据课程名,查询选修该课程的学生的学号、姓名和分数。
```
CREATE FUNCTION fn_course_students (@course_name VARCHAR(50))
RETURNS TABLE
AS
RETURN
(
SELECT s.student_id, s.student_name, s.score
FROM students s
INNER JOIN course_selection cs ON s.student_id = cs.student_id
INNER JOIN courses c ON cs.course_id = c.course_id
WHERE c.course_name = @course_name
);
```
可以使用该函数进行查询:
```
SELECT * FROM dbo.fn_course_students('计算机科学'); -- 返回选修计算机科学课程的学生的学号、姓名和分数
```