编写存储过程(带输入参数和默认值:'计算机系')
时间: 2023-07-08 09:18:40 浏览: 46
下面是一个简单的存储过程示例,它带有一个输入参数并设置了默认值:
```sql
CREATE PROCEDURE get_students_by_dept(
in_dept_name VARCHAR2 DEFAULT '计算机系'
)
IS
BEGIN
SELECT * FROM students WHERE dept_name = in_dept_name;
END;
```
在上面的存储过程中,我们定义了一个名为get_students_by_dept的存储过程,它带有一个名为in_dept_name的输入参数,并设置了默认值'计算机系'。存储过程的主体部分使用SELECT语句从students表中选择部门名称等于输入参数的所有学生记录。
使用该存储过程的语法如下:
```sql
EXECUTE get_students_by_dept('某个部门名称');
```
如果没有指定输入参数,则将使用默认值'计算机系',如下所示:
```sql
EXECUTE get_students_by_dept;
```
相关问题
mysql 编写存储过程(带输入参数和默认值:'计算机系')
下面是一个简单的MySQL存储过程示例,它带有一个输入参数并设置了默认值:
```mysql
DELIMITER //
CREATE PROCEDURE get_students_by_dept(
IN in_dept_name VARCHAR(255)
)
BEGIN
IF in_dept_name IS NULL THEN
SET in_dept_name = '计算机系';
END IF;
SELECT * FROM students WHERE dept_name = in_dept_name;
END //
DELIMITER ;
```
在上面的存储过程中,我们定义了一个名为get_students_by_dept的存储过程,它带有一个名为in_dept_name的输入参数。存储过程的主体部分使用SELECT语句从students表中选择部门名称等于输入参数的所有学生记录。同时,使用 IF语句来检查输入参数是否为空,如果为空,则将其设置为默认值'计算机系'。
使用该存储过程的语法如下:
```mysql
CALL get_students_by_dept('某个部门名称');
```
如果没有指定输入参数,则将使用默认值'计算机系',如下所示:
```mysql
CALL get_students_by_dept(NULL);
```
建立Student数据库,其中包含学生表Stu (Sno,Sname,Ssex,Sage,Sdept)、课程表:Course(Cno,Cname,Cpno,Ccredit)和学生选课表:SC(Sno,Cno,Grade);编写相应的存储过程,完成下面的功能: (1)编写带输入参数的存储过程sp_DispSC_Sdept,以查询指定系(输入参数:@sdept)的学生的选课信息,列出学号、姓名、所在系、课程名和成绩等内容。在SQL查询管理器下调用该存储过程,并测试测试执行结果。并将存储过程的SQL脚本和测试结果写到实验报告上。 1)编写存储过程(带输入参数和默认值:'计算机系') 2)调用存储过程①不带值 EXECUTE sp_DispSC_Sdept ②带常量EXECUTE sp_DispSC_Sdept '信息系' ③带变量 EXECUTE sp_DispSC_Sdept @sdept='数学系'
好的,以下是创建数据库和存储过程的SQL脚本:
```
-- 创建数据库
CREATE DATABASE StudentDB
-- 使用数据库
USE StudentDB
-- 创建学生表Stu
CREATE TABLE Stu (
Sno VARCHAR(10) PRIMARY KEY,
Sname VARCHAR(20) NOT NULL,
Ssex CHAR(2) NOT NULL,
Sage INT NOT NULL,
Sdept VARCHAR(20) NOT NULL
)
-- 创建课程表Course
CREATE TABLE Course (
Cno VARCHAR(10) PRIMARY KEY,
Cname VARCHAR(20) NOT NULL,
Cpno VARCHAR(10),
Ccredit INT NOT NULL
)
-- 创建学生选课表SC
CREATE TABLE SC (
Sno VARCHAR(10),
Cno VARCHAR(10),
Grade INT NOT NULL,
PRIMARY KEY (Sno, Cno),
FOREIGN KEY (Sno) REFERENCES Stu(Sno),
FOREIGN KEY (Cno) REFERENCES Course(Cno)
)
-- 插入测试数据
INSERT INTO Stu VALUES ('S001', '张三', '男', 20, '计算机系')
INSERT INTO Stu VALUES ('S002', '李四', '女', 21, '信息系')
INSERT INTO Stu VALUES ('S003', '王五', '男', 19, '数学系')
INSERT INTO Course VALUES ('C001', '数据库', NULL, 3)
INSERT INTO Course VALUES ('C002', '数据结构', NULL, 4)
INSERT INTO Course VALUES ('C003', '计算机组成原理', 'C002', 3)
INSERT INTO SC VALUES ('S001', 'C001', 85)
INSERT INTO SC VALUES ('S001', 'C002', 90)
INSERT INTO SC VALUES ('S002', 'C001', 75)
INSERT INTO SC VALUES ('S002', 'C002', 80)
INSERT INTO SC VALUES ('S003', 'C002', 95)
-- 创建存储过程sp_DispSC_Sdept
CREATE PROCEDURE sp_DispSC_Sdept
@sdept VARCHAR(20) = '计算机系'
AS
BEGIN
SELECT Stu.Sno, Stu.Sname, Stu.Sdept, Course.Cname, SC.Grade
FROM Stu
JOIN SC ON Stu.Sno = SC.Sno
JOIN Course ON SC.Cno = Course.Cno
WHERE Stu.Sdept = @sdept
END
```
然后我们依次调用存储过程:
1. 不带值:
```
EXECUTE sp_DispSC_Sdept
```
执行结果:
```
Sno Sname Sdept Cname Grade
S001 张三 计算机系 数据库 85
S001 张三 计算机系 数据结构 90
```
2. 带常量:
```
EXECUTE sp_DispSC_Sdept '信息系'
```
执行结果:
```
Sno Sname Sdept Cname Grade
S002 李四 信息系 数据库 75
S002 李四 信息系 数据结构 80
```
3. 带变量:
```
DECLARE @sdept VARCHAR(20) = '数学系'
EXECUTE sp_DispSC_Sdept @sdept
```
执行结果:
```
Sno Sname Sdept Cname Grade
S003 王五 数学系 数据结构 95
```
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)