2013-07-19 63 views
0

找出学校的校长通过输入学校名称我的存储过程不起作用

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; 
/

它说编译错误,当我运行它。为什么?

回答

3

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

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


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

select * from user_errors 
where name = 'GETHEADOFSCHOOL'; 

请注意,Oracle将其对象名称存储在CAPITALS中。所以CamelCase在源代码中都很好,但没有下划线会使数据字典查找变得困难。