我在oracle sql plus中创建一个函数,它将empno作为参数并返回其工资。但它没有被创造出来,我哪里出错了?
这是我的功能:
CREATE FUNCTION GETEMPSALARY (EMPNUMBER IN INTEGER) RETURN INTEGER
IS
EMPSALARY INTEGER;
BEGIN
SELECT SAL INTO EMPSALARY FROM EMP WHERE EMP.EMPNO = EMPNUMBER;
RETURN EMPSALARY;
END GETEMPSALARY;
这是错误:
Error at line 1: PLS-00103: Encountered the symbol "(" when expecting one of the following:
. @ % ; is authid as cluster order using external character
deterministic parallel_enable pipelined aggregate
result_cache
1. CREATE FUNCTION GETNAMES1 (EMPID IN INTEGER) RETURN VARCHAR(20)
2. IS
3. EMPNAME VARCHAR(50);
答案 0 :(得分:1)
你错过了/在最后。
CREATE FUNCTION GETEMPSALARY (EMPNUMBER IN INTEGER) RETURN INTEGER
IS
DECLARE
EMPSALARY INTEGER;
BEGIN
SELECT SAL INTO EMPSALARY FROM EMP WHERE EMP.EMPNO = EMPNUMBER;
RETURN EMPSALARY;
END GETEMPSALARY;
/
编辑: 由于你的新错误是一个完全不同的功能!
CREATE FUNCTION GETNAMES1 (EMPID IN INTEGER) RETURN VARCHAR(20)
你不应该指定回报的精确度,所以把
RETURN VARCHAR2
也不要使用VARCHAR
,而只使用VARCHAR2
并且语句被忽略;
SQL> CREATE FUNCTION GETEMPSALARY (EMPNUMBER IN INTEGER) RETURN INTEGER
2 IS
3 EMPSALARY INTEGER;
4 BEGIN
5 SELECT SAL INTO EMPSALARY FROM EMP WHERE EMP.EMPNO = EMPNUMBER;
6 RETURN EMPSALARY;
7 END GETEMPSALARY;
8 /
Warning: Function created with compilation errors.
SQL> show errors
Errors for FUNCTION GETEMPSALARY:
LINE/COL ERROR
-------- -----------------------------------------------------------------
5/1 PL/SQL: SQL Statement ignored
5/32 PL/SQL: ORA-00942: table or view does not exist
SQL>
您看到的后续错误是什么,因为此错误后面应该是真正的错误