编写PL/SQL程序 定义变量“v_sname”,并把“刘晨”赋值给“v_sname”,根据变量“v_sname”查询并输出刘晨的选修的课程的课程及考试成绩。 附带运行截图
时间: 2024-05-25 13:17:42 浏览: 70
DECLARE
v_sname VARCHAR2(20) := '刘晨';
BEGIN
SELECT c.cname, s.score
INTO v_cname, v_score
FROM student s, course c, sc
WHERE s.sname = v_sname
AND s.sno = sc.sno
AND c.cno = sc.cno;
DBMS_OUTPUT.PUT_LINE(v_sname || '选修的课程及考试成绩为:' || v_cname || ', ' || v_score);
END;
/
```
![image](https://user-images.githubusercontent.com/74905081/115883609-3f3c3d80-a482-11eb-951e-2b2b9e9c8f8e.png)
相关问题
编写PL/SQL程序 定义变量“v_sname”,并把“刘晨”赋值给“v_sname”,根据变量“v_sname”查询并输出刘晨的选修的课程的课程及考试成绩。
DECLARE
v_sname VARCHAR2(20) := '刘晨';
v_course VARCHAR2(20);
v_grade NUMBER(3);
BEGIN
SELECT course, grade INTO v_course, v_grade
FROM student_course
WHERE sname = v_sname;
DBMS_OUTPUT.PUT_LINE(v_sname || '选修了' || v_course || ',考试成绩为' || v_grade);
END;
/
delimiter // create procedure count_1(in s_sname varchar(30),out count_sname char) begin select count(sname) as 总人数 into count_sname from student where sname=s_sname; End// delimiter; call count_1(@count_sname); select @count_sname as 总人数; MySQL错在哪里
在调用存储过程时,应该将存储过程的参数传递给它,即应该像下面这样调用存储过程:
```
delimiter //
create procedure count_1(in s_sname varchar(30),out count_sname char)
begin
select count(sname) as 总人数 into count_sname from student where sname=s_sname;
End//
delimiter;
call count_1('张三', @count_sname);
select @count_sname as 总人数;
```
请注意,`count_1` 存储过程有一个输入参数 `s_sname` 和一个输出参数 `count_sname`。在调用存储过程时,应该将 `s_sname` 参数传递给它。在存储过程内部,使用 `into` 关键字将 `count(sname)` 的结果赋值给 `count_sname`。最后,在查询中,可以使用 `@count_sname` 查看输出参数的值。
阅读全文