Oracle包错误

Oracle包错误,oracle,package,Oracle,Package,我想创建一个包,在包中我们有一个带有参数的函数。我有一个TIME_DIM的表,该表的粒度是一条记录/秒。我收到一个错误,而装箱这个包任何人帮助我在这方面 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_

我想创建一个包,在包中我们有一个带有参数的函数。我有一个TIME_DIM的表,该表的粒度是一条记录/秒。我收到一个错误,而装箱这个包任何人帮助我在这方面

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;

我不知道您遇到了什么错误,但我看到了几个问题: 通过TIMEDESC变量的声明,varchar2的大小丢失: 例如:
timedescvarchar2(2000)或更好

TIMEDESC TIME_DIM.TIME_DESC%TYPE;
下一站有一个tipo

fetch c1 into TIME_DESC;
您已经声明了
TIMEDESC
而不是
TIME\u DESC
作为变量的名称

可能以下是一个问题

TIMEDESC := 9999;

TIMEDESC是varchar类型,但您为其分配了编号

这里有许多错误。您似乎正在声明包含代码的包规范。您需要一个规范和主体。我在每行有问题的地方都添加了评论:

-- 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;
/

另一个你似乎没有掌握提供人们需要帮助你的信息的窍门;这里面临错误。错误(7,4):PLS-00103:在预期以下情况之一时遇到符号“TIMEDESC”:语言感谢wweicker仍然我收到错误“错误(9,1):PLS-00103:在预期以下情况之一时遇到符号“CREATE”:结束函数pragma过程子类型当前光标删除之前存在”@史蒂文·史密斯:哎呀,我打错了“结束打包时间”而不是“结束打包时间”—试试看again@wweicker-我认为“Steve”犯的错误是因为在
结束打包时间之后没有
/
行。SQL开发人员将把这一切视为一个命令。(SQL*Plus也不会喜欢的)你的胆量真是太棒了。非常感谢威克和亚历克斯