日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

08. 函数和流程控制

發(fā)布時間:2024/4/17 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 08. 函数和流程控制 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
函數(shù)和流程控制 -- 臨時把語句結(jié)束 ; 改為以 $$ DELIMITER $$ SELECT * FROM student$$ DELIMITER ; -- 改回來 -- 函數(shù)格式 -- DELIMITER $$ -- CREATE FUNCTION 函數(shù)名(參數(shù)1 參數(shù)類型,...) RETURNS 函數(shù)返回值類型 -- 函數(shù)描述 -- BEGIN -- 函數(shù)體 -- END; -- $$ -- DELIMITER ; -- 函數(shù)描述 -- contains sql: 不包含讀寫語句 -- no sql: 函數(shù)體不包含SQL查詢語句 -- reads sql data: -- modifies sql data: -- sql security: -- definer: -- invoker: -- comment: DELIMITER $$ CREATE FUNCTION row_no_fn() RETURNS INT NO SQL BEGIN SET @row_no = @row_no + 1; RETURN @row_no; END; $$ DELIMITER ; SET @row_no = 0; SELECT row_no_fn() AS '行號',student_no,student_name FROM student; -- 查詢學(xué)生選擇的課程編號 -- 傳入的學(xué)生學(xué)號,返回的是選擇的科目數(shù)量 DROP FUNCTION get_choose_number_fn; DELIMITER $$ CREATE FUNCTION get_choose_number_fn(student_no1 VARCHAR(10)) RETURNS INT READS SQL DATA BEGIN DECLARE choose_number INT; SELECT COUNT(course_no) INTO choose_number FROM choose WHERE student_no = student_no1; RETURN choose_number; END; $$ DELIMITER ; SELECT get_choose_number_fn('2012003') AS '選擇了幾門?'; SELECT NAME FROM mysql.proc WHERE db = 'choose' AND TYPE = 'function'; SHOW CREATE FUNCTION row_no_fn; -- 查看已定義的函數(shù) 流程控制 -- 1. if語句 -- if 條件 then -- 語句1 -- elseif 條件2 then -- 語句2 -- end if -- 根據(jù)編號及角色得到名字 DROP FUNCTION get_name_fn; DELIMITER $$ CREATE FUNCTION get_name_fn(number VARCHAR(10),role VARCHAR(10)) RETURNS VARCHAR(30) READS SQL DATA BEGIN DECLARE tmpName VARCHAR(30); -- 局部變量 IF (role = 'student') THEN SELECT student_name INTO tmpName FROM student WHERE student_no = number; ELSEIF (role = 'teacher') THEN SELECT teacher_name INTO tmpName FROM teacher WHERE teacher_no = number; ELSE SET tmpName = '輸入有誤'; END IF; RETURN tmpName; END; $$ DELIMITER ; SELECT get_name_fn('2012001','student'),get_name_fn('001','teacher'),get_name_fn('001','s'); -- 2. CASE 語句 -- case 判斷的變量 -- when 條件值 then 語句1 -- WHEN 條件值2 THEN 語句2 -- end case;DROP FUNCTION get_week_fn; DELIMITER $$ CREATE FUNCTION get_week_fn(week_no INT) RETURNS VARCHAR(20) NO SQL BEGIN DECLARE tmpName VARCHAR(20); -- 局部變量 CASE week_no WHEN 0 THEN SET tmpName = '星期一'; WHEN 1 THEN SET tmpName = '星期二'; WHEN 2 THEN SET tmpName = '星期三'; WHEN 3 THEN SET tmpName = '星期四'; WHEN 4 THEN SET tmpName = '星期五'; ELSE SET tmpName = '今天休息'; END CASE; RETURN tmpName; END; $$ DELIMITER ; SELECT NOW(),get_week_fn(WEEKDAY(NOW()));-- 循環(huán)語句 -- while 條件 DO -- 循環(huán)體 -- End While;-- labelA:while 條件 DO -- 循環(huán)體 -- leave labelA; 跳出循環(huán) -- End While;-- repeat --循環(huán)體 -- until 條件 -- end repeat-- labelB:loop --循環(huán)體 -- if 條件 then -- leave labelB; -- end if; -- end loop DELIMITER $$ CREATE FUNCTION get_sum1_fn(n INT) RETURNS INT NO SQL BEGIN DECLARE SUM INT DEFAULT 0; DECLARE i INT DEFAULT 1; WHILE i <= n DO SET SUM = SUM + i; SET i= i + 1; END WHILE; RETURN SUM; END; $$ DELIMITER ;SELECT get_sum1_fn(100);DELIMITER $$ CREATE FUNCTION get_sum2_fn(n INT) RETURNS INT NO SQL BEGIN DECLARE SUM INT DEFAULT 0; DECLARE i INT DEFAULT 1; A:WHILE TRUE DO SET SUM = SUM + i; SET i= i + 1; IF i = 101 THEN LEAVE A; -- 跳出 END IF; END WHILE; RETURN SUM; END; $$ DELIMITER ;SELECT get_sum2_fn(100);CREATE TABLE testTable (a INT);DROP FUNCTION insert_100_testdata_fn; DELIMITER $$ CREATE FUNCTION insert_100_testdata_fn() RETURNS BOOL BEGIN DECLARE i INT DEFAULT 1; A:WHILE TRUE DOINSERT INTO testTable VALUES(i); SET i= i + 1; IF i = 101 THEN LEAVE A; -- 跳出 相當(dāng)于break -- iterate A; -- 相當(dāng)continue END IF; END WHILE; RETURN TRUE; END; $$ DELIMITER ;SELECT insert_100_testdata_fn(); SELECT COUNT(*) FROM testTable;DELIMITER $$ CREATE FUNCTION get_sum4_fn(n INT) RETURNS INT NO SQL BEGIN DECLARE SUM INT DEFAULT 0; DECLARE i INT DEFAULT 1; REPEAT SET SUM = SUM + i; SET i= i + 1; UNTIL i=101 END REPEAT;RETURN SUM; END; $$ DELIMITER ;SELECT get_sum4_fn(100);

上面程序的數(shù)據(jù)創(chuàng)建代碼:

CREATE DATABASE choose; USE choose;DROP TABLE choose; DROP TABLE student; DROP TABLE course; DROP TABLE classes; DROP TABLE teacher;CREATE TABLE teacher( teacher_no VARCHAR(10) PRIMARY KEY, teacher_name VARCHAR(30) NOT NULL, teacher_contact VARCHAR(30) ) ENGINE = INNODB DEFAULT CHARSET=utf8;CREATE TABLE classes( class_no VARCHAR(10) PRIMARY KEY, class_name VARCHAR(30) NOT NULL UNIQUE, department_name VARCHAR(30) NOT NULL ) ENGINE = INNODB DEFAULT CHARSET=utf8;ALTER TABLE classes CHANGE deaprtment_name department_name VARCHAR(30); CREATE TABLE course( course_no VARCHAR(10) PRIMARY KEY, course_name VARCHAR(30) NOT NULL, up_limit INT DEFAULT 60, description TEXT, STATUS VARCHAR(6) DEFAULT '未審核', teacher_no VARCHAR(10) NOT NULL UNIQUE, CONSTRAINT course_teacher_fk FOREIGN KEY(teacher_no) REFERENCES teacher(teacher_no) )ENGINE = INNODB DEFAULT CHARSET=utf8;CREATE TABLE student( student_no VARCHAR(10) PRIMARY KEY, student_name VARCHAR(30) NOT NULL, student_contact VARCHAR(30), class_no VARCHAR(10), CONSTRAINT student_class_fk FOREIGN KEY(class_no) REFERENCES classes(class_no) )ENGINE = INNODB DEFAULT CHARSET=utf8;CREATE TABLE choose( choose_no INT AUTO_INCREMENT PRIMARY KEY, student_no VARCHAR(10) NOT NULL, course_no VARCHAR(10) NOT NULL, score TINYINT UNSIGNED, choose_time DATETIME, CONSTRAINT choose_student_fk FOREIGN KEY(student_no) REFERENCES student(student_no), CONSTRAINT choose_course_fk FOREIGN KEY(course_no) REFERENCES course(course_no) )ENGINE = INNODB DEFAULT CHARSET=utf8;INSERT INTO teacher VALUES('001','張老師','11000000000'); INSERT INTO teacher VALUES('002','李老師','12000000000'); INSERT INTO teacher VALUES('003','王老師','13000000000');INSERT INTO classes(class_no,class_name,department_name) VALUES('1','2012自動化1班', '機電工程'); INSERT INTO classes(class_no,class_name,department_name) VALUES('2','2012自動化2班', '機電工程'); INSERT INTO classes(class_no,class_name,department_name) VALUES('3','2012自動化3班', '機電工程');INSERT INTO course VALUES('1','java語言程序設(shè)計',DEFAULT,'暫無','已審核','001'); INSERT INTO course VALUES('2','MySQL數(shù)據(jù)庫',150,'暫無','已審核','002'); INSERT INTO course VALUES('3','c語言程序設(shè)計',230,'暫無','已審核','003');INSERT INTO student VALUES ('2012001','張三','15000000000',1), ('2012002','李四','16000000000',1), ('2012003','王五','17000000000',3), ('2012004','馬六','18000000000',2), ('2012005','田七','19000000000',2);INSERT INTO choose VALUES (NULL,'2012001',2,40,NOW()), (NULL,'2012001',1,50,NOW()), (NULL,'2012002',3,60,NOW()), (NULL,'2012002',2,70,NOW()), (NULL,'2012003',1,80,NOW()), (NULL,'2012004',2,90,NOW()), (NULL,'2012005',3,NULL,NOW()), (NULL,'2012005',1,NULL,NOW());

轉(zhuǎn)載于:https://www.cnblogs.com/bchen/p/7426298.html

總結(jié)

以上是生活随笔為你收集整理的08. 函数和流程控制的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。