执行过程时出错

时间:2014-03-03 12:00:27

标签: sql oracle plsql

我一直在努力弄清楚为什么我的程序暂时不起作用。所以任何人都可以帮助我,对不起我仍然是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行

4 个答案:

答案 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;