第一题:定义函数fun_sum()计算n!
create function fun_sum(n int)
returns int #返回值类型
begin
declare i int default 1; #变量声明及初始化
declare ans int default 1;
while i<=n do
set ans=ans*i;
set i=i+1;
end while; /*注意:end while后面要加分号*/
return ans; -- 返回结果
end
select fun_sum(4)
delimiter $$
CREATE FUNCTION fun_class ( s_no VARCHAR ( 20 ) )
RETURNS VARCHAR ( 20 )
READS SQL DATA
BEGIN
DECLARE classname VARCHAR ( 20 );
SELECT
clname INTO classname
FROM
student s
LEFT JOIN class c ON s.classno = c.classno
WHERE
sno = s_no;
RETURN classname;
END;
$$
select fun_class('2018010101');
delimiter $$
CREATE FUNCTION fun_compare (peacetime decimal(5,1),practice decimal(5,1))
RETURNS VARCHAR (20)
READS SQL DATA
BEGIN
DECLARE compareresult VARCHAR ( 20 );
case when peacetime = practice then set compareresult = '比较均衡';
when peacetime > practice then set compareresult = '加强实践';
when peacetime < practice then set compareresult = '注重平时' ;
end case ;
RETURN compareresult;
END;
$$
select sno,peacetime,practice,fun_compare(peacetime,practice) from score
https://blog.csdn.net/WSS_ang/article/details/84996945
兄弟,我帮你写第一个,看着给奥
编写自定义函数
create procedure factorial(n int)
begin
declare i int default 1; #变量声明及初始化
declare ans int default 1;
while i<=n do
set ans=ans*i; -- set用于赋值,且set不可省略(两个减号加一个空格可开启注释)
set i=i+1;
end while; /*注意:end while后面要有分号*/
select ans; -- 输出结果
end
执行语句
call factorial(5)
下面第一个答案是我搜索出来的,你改函数名就行:
http://t.csdn.cn/SFNnO
create procedure factorial(n int)
begin
declare i int default 1; #变量声明及初始化
declare ans int default 1;
while i<=n do
set ans=ans*i; -- set用于赋值,且set不可省略(两个减号加一个空格可开启注释)
set i=i+1;
end while; /*注意:end while后面要有分号*/
select ans; -- 输出结果
end
剩下的题下午有空写给你
参考:
1 https://blog.csdn.net/liuxc324/article/details/117016928
2
create function func_class(id int) returns int
begin
declare n varchar(15);
select name from class where cid=id into n;
return n;
end;
select func_class(1);
3
CREATE FUNCTION func_compare(peacetime int, practice int) RETURNS VARCHAR(60)
BEGIN
if peacetime> practice THEN
return "加强实践";
ELSEIF peacetime<practice THEN
return "注重平时";
ELSEIF peacetime=practice THEN
return "比较均衡";
END IF;
编写自定义函数
create procedure factorial(n int)
begin
declare i int default 1; #变量声明及初始化
declare ans int default 1;
while i<=n do
set ans=ans*i; -- set用于赋值,且set不可省略(两个减号加一个空格可开启注释)
set i=i+1;
end while; /*注意:end while后面要有分号*/
select ans; -- 输出结果
end
执行语句
call factorial(5)