Ketika saya menekan F8 di pengembang PL/SQL untuk pembuatan Paket MyPackage saya mendapatkan kesalahan di bawah ini

Error: PLS-00103: Encountered the symbol ")" when expecting one of the following:

          <an identifier> <a double-quoted delimited-identifier>
          current delete exists prior
Line: 24
Text: FUNCTION MyFunction() RETURN VARCHAR;

Di bawah ini adalah kode

CREATE OR REPLACE PACKAGE MyPackage AS
FUNCTION MyFunction() RETURN VARCHAR;
END MyPackage;

CREATE OR REPLACE PACKAGE BODY MyPackage AS

FUNCTION MyFunction RETURN VARCHAR2 IS
        l_pram mytable.param_val%TYPE;
    BEGIN
        SELECT SomeColumnVal INTO l_pram FROM mytable WHERE SomeColumn = 'SomeValue';
        RETURN l_pram;
END MyFunction; 

END MyPackageBody;
0
user2488578 14 Desember 2017, 08:57

1 menjawab

Jawaban Terbaik

Anda memiliki beberapa kesalahan:

Pertama, cukup letakkan tanda kurung seperti yang Anda lakukan di badan paket. Karena fungsinya tidak memiliki params, Anda tidak membutuhkannya. Kedua, pastikan tipe pengembalian di spec sama dengan yang Anda gunakan di body, dalam hal ini Anda harus menggunakan VARCHAR2

CREATE OR REPLACE PACKAGE MyPackage AS
  FUNCTION MyFunction RETURN VARCHAR2;
END MyPackage;

Terakhir, nama akhir di badan paket harus sama dengan yang Anda gunakan di spesifikasi, mis., MyPackage, bukan MyPackageBody

CREATE OR REPLACE PACKAGE BODY MyPackage AS

  FUNCTION MyFunction RETURN VARCHAR2 IS
    l_pram mytable.param_val%TYPE;
  BEGIN
    SELECT SomeColumnVal INTO l_pram FROM mytable WHERE SomeColumn = 'SomeValue';
    RETURN l_pram;
  END MyFunction; 

END MyPackage;
1
pablomatico 14 Desember 2017, 06:49