在 pl/sql 中创建过程时出现错误
Posted
技术标签:
【中文标题】在 pl/sql 中创建过程时出现错误【英文标题】:I'm getting error while creating a procedure in pl/sql 【发布时间】:2020-09-21 10:16:03 【问题描述】:我的代码
CREATE OR REPLACE proc_grade IS
v varchar2(20);
c varchar2(20);
t integer(10);
x integer(10);
CURSOR s IS
SELECT total_marks,name,roll_no FROM STUD_MARKS ORDER BY roll_no;
BEGIN
OPEN s;
LOOP
FETCH s INTO x,c,t;
BEGIN
v:=grade(x);
INSERT INTO result VALUES(t,c,v);
dbms_output.put_line('ROLL_NO : '||t||'NAME: '||c||' CLASS: '||v);
END;
EXIT WHEN s%notfound;
END LOOP;
CLOSE s;
END;
我得到的错误如下:
ORA-00922:缺少或无效选项
ORA-06512:在“SYS.WWV_DBMS_SQL_APEX_200100”,第 581 行
ORA-06512:在“SYS.DBMS_SYS_SQL”,第 1658 行
ORA-06512:在“SYS.WWV_DBMS_SQL_APEX_200100”,第 567 行
ORA-06512:在“APEX_200100.WWV_FLOW_DYNAMIC_EXEC”,第 2127 行
c varchar2(20);
t 整数(10);
x 整数(10);
CURSOR 是
【问题讨论】:
【参考方案1】:不是
CREATE OR REPLACE proc_grade
但是
CREATE OR REPLACE PROCEDURE proc_grade
顺便说一句,你可以通过只运行这个而不是你编写的所有 PL/SQL 来更简单地完成它。
INSERT INTO result
SELECT roll_no, name, grade (total_marks)
FROM stud_marks;
【讨论】:
以上是关于在 pl/sql 中创建过程时出现错误的主要内容,如果未能解决你的问题,请参考以下文章
过程创建时出现编译错误 PL/SQL: ORA-00947: not enough values
为啥我们要编写 create/replace 来在 PL/SQL 中创建过程