CREATE OR REPLACE PACKAGE TEMPLATE1 IS TYPE ARR_SEQ IS VARRAY(100) OF VARCHAR2(200); FUNCTION FUN_CREATE_PROJECT_ID(IN_N IN NUMBER) RETURN ARR_SEQ;END TEMPLATE1;CREATE OR REPLACE PACKAGE BODY TEMPLATE1 IS FUNCTION FUN_CREATE_PROJECT_ID(IN_N IN NUMBER) RETURN ARR_SEQ AS
N NUMBER;
I NUMBER;
V_VAL VARCHAR2(200);
V_ARR_SEQ ARR_SEQ;
BEGIN
N := NVL(IN_N, 0);
I := 1;
V_ARR_SEQ := ARR_SEQ();
LOOP
EXIT WHEN N <= 0;
SELECT SEQ_AUTO_ID.nextval INTO V_VAL FROM DUAL;
V_ARR_SEQ.EXTEND;
V_ARR_SEQ(I) := V_VAL;
N := N - 1;
I := I + 1;
END LOOP;
RETURN(V_ARR_SEQ);
END FUN_CREATE_PROJECT_ID;
在plsql的窗口里面运行,结果有错误,重新编译发现错误如下:Compilation errors for PACKAGE FAQ.TEMPLATE1Error: PLS-00103: Encountered the symbol "CREATE"
Line: 9
Text: CREATE OR REPLACE PACKAGE BODY TEMPLATE1 IS大家帮看下,这个错误如何修改?
N NUMBER;
I NUMBER;
V_VAL VARCHAR2(200);
V_ARR_SEQ ARR_SEQ;
BEGIN
N := NVL(IN_N, 0);
I := 1;
V_ARR_SEQ := ARR_SEQ();
LOOP
EXIT WHEN N <= 0;
SELECT SEQ_AUTO_ID.nextval INTO V_VAL FROM DUAL;
V_ARR_SEQ.EXTEND;
V_ARR_SEQ(I) := V_VAL;
N := N - 1;
I := I + 1;
END LOOP;
RETURN(V_ARR_SEQ);
END FUN_CREATE_PROJECT_ID;
在plsql的窗口里面运行,结果有错误,重新编译发现错误如下:Compilation errors for PACKAGE FAQ.TEMPLATE1Error: PLS-00103: Encountered the symbol "CREATE"
Line: 9
Text: CREATE OR REPLACE PACKAGE BODY TEMPLATE1 IS大家帮看下,这个错误如何修改?
解决方案 »
- linux下oracle10g dbca启动报错问题?
- Oracle11g如何执行动态DDL语句
- Windows2008下使用.NET开发, Oracle11g, 打开连接时出现"无法列入分布式事务处理",请问:如何解决?
- 初级问题:为什么在编译java程序的时候出现oracle.jdbc.driver不存在?
- sql 2000导入oracle 9i
- 存储过程向其中的游标传值的难解问题,单独执行可以取到数据,而放在存储过程中进行传值取不到数据
- 打印表名的存储过程,不知道错在哪里?
- oracle的触发器中关于日期计算的简单语句,但是编译出现错误,请高手指点
- 请问Oracle 启不起来,怎么解决啊
- 比较一下ORACLE和SQLSERVER?
- ORA-06508: PL/SQL: 无法找到正在调用 的程序单元
- 关于oracle中存储过程嵌套调用,请各位高人指教?
你这个分开执行应该是可以的
CREATE OR REPLACE PACKAGE TEMPLATE1 IS TYPE ARR_SEQ IS VARRAY(100) OF VARCHAR2(200); FUNCTION FUN_CREATE_PROJECT_ID(IN_N IN NUMBER) RETURN ARR_SEQ;END TEMPLATE1;
/CREATE OR REPLACE PACKAGE BODY TEMPLATE1 IS FUNCTION FUN_CREATE_PROJECT_ID(IN_N IN NUMBER) RETURN ARR_SEQ AS
N NUMBER;
I NUMBER;
V_VAL VARCHAR2(200);
V_ARR_SEQ ARR_SEQ;
BEGIN
N := NVL(IN_N, 0);
I := 1;
V_ARR_SEQ := ARR_SEQ();
LOOP
EXIT WHEN N <= 0;
SELECT SEQ_AUTO_ID.nextval INTO V_VAL FROM DUAL;
V_ARR_SEQ.EXTEND;
V_ARR_SEQ(I) := V_VAL;
N := N - 1;
I := I + 1;
END LOOP;
RETURN(V_ARR_SEQ);
END FUN_CREATE_PROJECT_ID;
包体缺少end结尾
按照你的方式来编译,我在plsql的sql窗口或者command窗口编译,都是报如下错误啊:Compilation errors for PACKAGE FAQ.TEMPLATE1Error: PLS-00103: Encountered the symbol "CREATE"
Line: 9
Text: CREATE OR REPLACE PACKAGE BODY TEMPLATE1 IS
FUNCTION FUN_CREATE_PROJECT_ID(IN_N IN NUMBER) RETURN ARR_SEQ iS
N NUMBER;
I NUMBER;
.....
BEGIN
........
end FUN_CREATE_PROJECT_ID;end TEMPLATE1; ------ 把这个加上。
/
CREATE OR REPLACE PACKAGE BODY TEMPLATE1 IS FUNCTION FUN_CREATE_PROJECT_ID(IN_N IN NUMBER) RETURN ARR_SEQ AS
N NUMBER;
I NUMBER;
V_VAL VARCHAR2(200);
V_ARR_SEQ ARR_SEQ;
BEGIN
N := NVL(IN_N, 0);
I := 1;
V_ARR_SEQ := ARR_SEQ();
LOOP
EXIT WHEN N <= 0;
SELECT SEQ_AUTO_ID.nextval INTO V_VAL FROM DUAL;
V_ARR_SEQ.EXTEND;
V_ARR_SEQ(I) := V_VAL;
N := N - 1;
I := I + 1;
END LOOP;
RETURN(V_ARR_SEQ);
END FUN_CREATE_PROJECT_ID;
end TEMPLATE1;
报一样的错误,这是为什么呢?
2
3 TYPE ARR_SEQ IS VARRAY(100) OF VARCHAR2(200);
4
5 FUNCTION FUN_CREATE_PROJECT_ID(IN_N IN NUMBER) RETURN ARR_SEQ;
6
7 END TEMPLATE1;
8 /
Warning: connection was lost and re-establishedPackage createdSQL> create sequence SEQ_AUTO_ID start with 1 increment by 1;Sequence createdSQL> CREATE OR REPLACE PACKAGE BODY TEMPLATE1 IS
2
3 FUNCTION FUN_CREATE_PROJECT_ID(IN_N IN NUMBER) RETURN ARR_SEQ AS
4 N NUMBER;
5 I NUMBER;
6 V_VAL VARCHAR2(200);
7 V_ARR_SEQ ARR_SEQ;
8 BEGIN
9 N := NVL(IN_N, 0);
10 I := 1;
11 V_ARR_SEQ := ARR_SEQ();
12 LOOP
13 EXIT WHEN N <= 0;
14 SELECT SEQ_AUTO_ID.nextval INTO V_VAL FROM DUAL;
15 V_ARR_SEQ.EXTEND;
16 V_ARR_SEQ(I) := V_VAL;
17 N := N - 1;
18 I := I + 1;
19 END LOOP;
20 RETURN(V_ARR_SEQ);
21 END;
22 end TEMPLATE1;
23 /Package body created
是不是一些空格的问题哟。show errrors;看看现在还在报什么样的错。
你先 drop PACKAGE TEMPLATE1 ;
然后在分开编译