- 6
- 0
- 约2.05千字
- 约 15页
- 2021-11-20 发布于上海
- 举报
SQL与可编程对象
存储过程
存储过程
可以将完成特定功能的一组SQL语句定义为存储过程,它是数据库的一种可编程对象。
Web应用程序
快速
灵活
安全
使用SQL语句创建存储过程
创建:
调用:
举例1:存储过程(无参数)
创建无参数存储过程proc_student,查询所有学生信息。
CREATE PROCEDURE proc_student()
SELECT * FROM student;
CALL proc_student();
创建存储过程:
调用存储过程:
括号不能省略
括号不能省略
举例2:存储过程(有输入参数)
创建带有输入参数的存储过程proc_searchstudent,按姓名查询特定学生信息。
CREATE PROCEDURE proc_searchstudent(IN stname varchar(16))
--stname是IN类型参数
SELECT * FROM STUDENT WHERE StudentName=stname;
-- 按参数stname查询
创建存储过程:
CALL proc_searchstudent(林豆豆);
或者:
SET @n=林豆豆; -- 自定义变量@n,赋值后作为实际参数
CALL proc_searchstudent(@n);
调用存储过程:
使用向导创建存储过程
举例2:创建带有输入参数的存储过程proc_searchstudent,按姓名查询特定学生信息。
调用存储过程
调用存储过程proc_searchstudent查询学生“林豆豆”的信息。
在查询编辑器中,执行带有输入参数的CALL语句查询“林豆豆”的信息
创建带有输入和输出类型参数的存储过程proc_countstudent,根据课程号统计选课人数。
CREATE PROCEDURE proc_countstudent(IN cscode char(4),OUT stnumber int)
-- cscode表示课程号,是输入参数;stnumber表示选修总人数,是输出参数
SELECT COUNT(StudentCode) into stnumber FROM courseenroll
WHERE Score IS NOT NULL AND CourseCode=cscode; -- 查询结果存stnumber参数
CALL proc_countstudent(C001,@st); -- 调用存储过程
SELECT @st AS 选修C001课程的学生人数:;-- 显示选课人数
调用存储过程,查询“C001”课的选修人数
举例3:存储过程(有输入参数和输出参数)
举例4:存储过程(插入操作)
创建一个向subject表中插入学科记录的存储过程proc_insertsubject。
CREATE PROCEDURE proc_insertsubject(sjcode char(3), sjname varchar(10))
--sjcode表示学科号,sjname表示学科名,是输入参数,可省略IN
--插入数据记录到subject
INSERT INTO subject VALUES(sjcode, sjname) ;
CALL proc_insertsubject(S18, 医学) ;
调用存储过程,完成记录添加
举例5:存储过程(修改操作)
创建一个按学号和课程号修改成绩的存储过程proc_updatescore。
CREATE PROC proc_UpdateGrade(stcode int, cscode char(4), sc float)
UPDATE courseenroll
SET Score=sc --以sc值修改成绩
WHERE StudentCode=stcode AND CourseCode=cscode ;
CALL proc_updatescore(1001,C001,80);
调用存储过程,将1001号学生的C001课程成绩改为80分。
维护存储过程
查看
修改
删除
举例6:修改存储过程
修改举例2所建立的存储过程proc_searchstudent,按输入的学生姓名模糊查询一些学生的信息。
CALL proc_searchstudent(%); -- 显示所有学生的信息
CALL proc_searchstudent( 张%); -- 显示姓张的学生的信息
CALL proc_searchstudent(张小宝); -- 显示学生张小宝的信息
存储过程
存储过程是完成特定功能的一组SQL语句的集合,它是数据库的一种数据对象。
Web应用程序
原创力文档

文档评论(0)