PLS-00905: 对象 MYCODELIBRARY.FIND_SUBJECT 无效
存储过程为:
CREATE OR REPLACE PROCEDURE --表示创建一个存储过程
find_subject(vid IN NUMBER) --存储过程的名字为:find_subject,有一个输入参数:id
AS
vname VCARCHAR2(100); --变量声明
vexplan CLOB;
BEGIN
SELECT s.name,s.explan INTO (vname,vexplan) FROM subject s WHERE s.id = vid; --存储过程执行的内容:根据ID找到科目的名称并且存入name变量中
DBMS_OUTPUT.PUT_LINE('科目名称是'||vname); --在控制台打印输出变量name
EXCEPTION --异常处理
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE('科目编号未找到'); --NO_DATA_FOUND是Oracle的关键字,表示如果没有找到就打印'雇员编号未找到'
END find_subject;
在命令行执行:
SQL> EXECUTE FIND_SUBJECT(1);
begin FIND_SUBJECT(1); end;
ORA-06550: 第 2 行, 第 7 列:
PLS-00905: 对象 MYCODELIBRARY.FIND_SUBJECT 无效
ORA-06550: 第 2 行, 第 7 列:
PL/SQL: Statement ignored
------解决方案--------------------存储过程编译失败
大概看了下,存储过程的语法有问题
最后的
END find_subject;
应该为
end;
Oracle存储过程基本语法
1 CREATE OR REPLACE PROCEDURE 存储过程名
2 IS
3 BEGIN
4 NULL;
5 END;