-1

empno を引数として取り、その給与を返す関数を oracle sql plus で作成しています。しかし、作成されていません。どこが間違っていますか?

これが私の機能です:

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);
4

1 に答える 1

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

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>

このエラーの後に実際のエラーが続くはずなので、その後に表示されるエラーは何ですか

于 2012-12-07T12:10:32.677 に答える