- SQL code
create or replace procedure peoplegrade(sname in char, cname in char, grade in smallint) is ssno char; ccno char;begin select sno into ssno from student where student.sname = sname; select cno into ccno from sgcourse where sgcourse.cname = cname;
这段代码是整个代码的一部分,这部分要想实现传入三个参数,分别是学生姓名,科目名称和成绩,在开始在student表中查询姓名等于传入姓名的学生学号并且赋予ssno变量,下面一条为差不多的。在这里,学生姓名已经假设不重复。可是单步调试运行到第一段select代码时会报错,说实际返回的行数超出请求行数,请问怎样修改才能实现目标,谢谢了
------解决方案--------------------
传入参数名不要与字段名相同
否则这里的sql语句会将该名称解析成表中的字段,而不是绑定变量
将sname和cname这两个参数名改成别的名称
------解决方案--------------------
ssno char;
ccno char;
这两个临时变量也最好指定长度,否则为char(1),很容易出现长度过小的错误
如果不是定长的可以改成varchar2(n)类型
传入参数也改成in varchar2
------解决方案--------------------