我一直在努力弄清楚为什么我的程序暂时不起作用。所以任何人都可以帮助我,对不起我仍然是sql的新手。它应该根据课程名称查找course_number。如果找不到匹配项,则默认课程编号为****。然后它将新记录插入student_course
表。这是我正在使用的数据库的副本https://www.dropbox.com/s/cmqmzggiygxbkth/dissertation_database.txt
https://www.dropbox.com/s/hm90jga9zsaawnt/course_procedure.txt
CREATE OR REPLACE PROCEDURE upda_course
( name IN VARCHAR2 )
IS
course_id VARCHAR2;
cursor c1 is
SELECT course_id
FROM courses
WHERE name = name;
BEGIN
open c1;
fetch c1 into course_id;
if c1%notfound then
course_id := 9999;
end if;
INSERT INTO course_modules
( course_id, module_id
)
VALUES
( name,
course_id );
commit;
close c1;
EXCEPTION
WHEN OTHERS THEN
raise_application_error(-20001,'An error was encountered - '||SQLCODE||' -ERROR- '||SQLERRM);
END upda_course;
/
SHOW ERRORS;
EXECUTE upda_course('business computing systems');
SHOW ERRORS;
执行时显示错误
* 第1行的错误: ORA-20001:遇到错误 - -6502 -ERROR- ORA-06502:PL / SQL:数字 或值错误:字符到数字转换错误 ORA-06512:在“INS2014_106.UPDA_COURSE”,第29行 ORA-06512:第1行
答案 0 :(得分:0)
请尝试,
过程是将参数(Name)作为输入:
EXECUTE upda_course 'somename';
答案 1 :(得分:0)
试试这个:
EXECUTE upda_course('some course');
答案 2 :(得分:0)
指定输入参数的输入值
EXECUTE upda_course 'somename';
答案 3 :(得分:0)
我相信course_id
表中的course_modules
列也是一个数字。您正在尝试将varchar2插入到Number
的列中,从而导致错误。也可以将输入变量用作v_name
之类的内容,因为下面的查询将返回表中的所有行,因为变量名与列名相同。与过程中的course_id
变量相同。
SELECT course_id
FROM courses
WHERE name = name;