-2

パッケージを作成したいのですが、パッケージ内にパラメーターを持つ関数があります。TIME_DIM のテーブルがあり、そのテーブルの粒度は 1 レコード/秒です。このパッケージの作成中にエラーが発生しました。誰か助けてください。

create or replace
PACKAGE PKG_TIME_DIM
IS
 Function FUN_TIME_DESC
   ( TIME_IN IN varchar2 )
   RETURN varchar2
IS
   TIMEDESC varchar2;
   CURSOR c1
   IS
     SELECT TIME_DESC
     from TIME_DIM
     where TIME_DESC = TIME_IN;
BEGIN
   open c1;
   fetch c1 into TIME_DESC;
   if c1%notfound then
      TIMEDESC := 9999;
   end if;
  close c1;
RETURN TIMEDESC;
END;
END;
4

2 に答える 2

2

ここには多くのエラーがあります。コードを含むパッケージ仕様を宣言しているようです。仕様と本体の両方が必要です。問題があった各行にコメントを追加しました。

-- Note: "CREATE OR REPLACE PACKAGE" = The specification
CREATE OR REPLACE PACKAGE PKG_TIME_DIM
IS

    FUNCTION FUN_TIME_DESC (TIME_IN IN VARCHAR2) RETURN VARCHAR2;

END PKG_TIME_DIM;
/

-- Note: "CREATE OR REPLACE PACKAGE BODY" = Keyword BODY = the body
CREATE OR REPLACE PACKAGE BODY PKG_TIME_DIM
IS
    FUNCTION FUN_TIME_DESC (TIME_IN IN VARCHAR2) RETURN VARCHAR2
    IS
        TIMEDESC  VARCHAR2(100 CHAR); -- Need to define length of this variable in characters or bytes

        CURSOR c1 IS
          SELECT TIME_DESC
            FROM TIME_DIM
           WHERE TIME_DESC = TIME_IN;
    BEGIN
        OPEN c1;
        FETCH c1 INTO TIMEDESC; -- Changed variable name to match the name you defined

        IF c1%NotFound THEN
            TIMEDESC := '9999'; -- Put quotes around this since this is a VARCHAR
        END IF;

        CLOSE c1;

        RETURN TIMEDESC;

    END FUN_TIME_DESC;

END PKG_TIME_DIM;
/
于 2013-07-17T15:25:45.807 に答える