oracle 在 sqlplus 中创建函数
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/13762720/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Creating functions in sqlplus
提问by user1844205
I am creating a function in oracle sql plus, that take empno as argument and returns its salary. But its not being created, where am I going wrong?
我正在 oracle sql plus 中创建一个函数,该函数以 empno 作为参数并返回其薪水。但它没有被创建,我哪里出错了?
Here is my function:
这是我的功能:
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;
Here is the error:
这是错误:
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);
回答by DazzaL
your missing the / at the end.
你最后错过了 / 。
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;
/
edit: due to your new error which is on a totally different function!
编辑:由于您的新错误是完全不同的功能!
CREATE FUNCTION GETNAMES1 (EMPID IN INTEGER) RETURN VARCHAR(20)
you shouldnt specifiy a precision on returns, so put
你不应该指定返回的精度,所以把
RETURN VARCHAR2
also dont use VARCHAR
, only VARCHAR2
也不要使用VARCHAR
,只有VARCHAR2
and for statement ignored;
和for语句被忽略;
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>
what is the subsequent error you see, as this error should be followed by a real error
你看到的后续错误是什么,因为这个错误后面应该是一个真正的错误