我的存储过程不起作用

时间:2013-07-19 05:40:15

标签: oracle stored-procedures plsql

输入学校名称

找出校长
CREATE OR REPLACE PROCEDURE getHeadOfSchool( inSchoolName IN VARCHAR ) IS 
DECLARE
V_headOfSchool  school.headOfSchool%TYPE;
BEGIN
SELECT headOfSchool INTO v_headOfSchool FROM school WHERE schoolName = inSchoolName;
DBMS_OUTPUT.PUT_LINE(‘The head of the school is ’||v_headOfSchool);
END;
/

它说我运行它时编译错误。为什么呢?

1 个答案:

答案 0 :(得分:3)

这是DECLARE关键字。这仅适用于匿名PL / SQL块。使用存储过程,IS关键字标记声明部分的开头。

PL / SQL文档提供了语法的正式规范和大量示例。 Find out more.


您可以通过显示编译错误自己解决此问题。像PLSQL Developer,SQL Developer或TOAD这样的现代IDE会自动执行此操作。在SQL * Plus中,您可以使用show errors命令。如果您正在使用其他客户端,则可以运行:

select * from user_errors
where name = 'GETHEADOFSCHOOL'; 

请注意,Oracle将其对象名称存储在CAPITALS中。所以CamelCase在源代码中表现非常好,但缺少下划线会使数据字典查找变得更加困难。