Oracle包错误
我想创建一个包,在包中我们有一个带有参数的函数。我有一个TIME_DIM的表,该表的粒度是一条记录/秒。我收到一个错误,而装箱这个包任何人帮助我在这方面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_
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也不会喜欢的)你的胆量真是太棒了。非常感谢威克和亚历克斯