本人今天才开始学PL/SQL,工作上需要作几个简单的包…………郁闷……
创建包头没有问题,代码如下
CREATE OR REPLACE PACKAGE PackageName AS
PROCEDURE procedure001(param001 OUT NUMBER);
END PackageName;
创建BODY的时候就出问题了
CREATE OR REPLACE PACKAGE BODY PackageName AS
PROCEDURE procedure001(param001 OUT NUMBER) IS
BEGIN
SELECT COUNT(*) into param001 FROM TABLE;
END procedure001;
END PackageName;
然后SQL*PLUS就警告说“BODY已经生成,但是编译的时候出现错误。”又不说是什么错误,实在找不出来了
可能是很幼稚的问题,还希望大家给予解决……
9 个解决方案
#1
你写得没问题,能运行就可以了。用真实的表名替换TABLE就可以了
#2
SQL> CREATE OR REPLACE PACKAGE PackageName AS
2 PROCEDURE procedure001(param001 OUT NUMBER);
3 END PackageName;
4 /
程序包已创建。
SQL> CREATE OR REPLACE PACKAGE BODY PackageName AS
2 PROCEDURE procedure001(param001 OUT NUMBER) IS
3 BEGIN
4 SELECT COUNT(*) into param001 FROM jbxx;
5 END procedure001;
6 END PackageName;
7 /
程序包主体已创建。
SQL>
没问题啊,看看是不是你的当前用户下没有“table"这张表啊
2 PROCEDURE procedure001(param001 OUT NUMBER);
3 END PackageName;
4 /
程序包已创建。
SQL> CREATE OR REPLACE PACKAGE BODY PackageName AS
2 PROCEDURE procedure001(param001 OUT NUMBER) IS
3 BEGIN
4 SELECT COUNT(*) into param001 FROM jbxx;
5 END procedure001;
6 END PackageName;
7 /
程序包主体已创建。
SQL>
没问题啊,看看是不是你的当前用户下没有“table"这张表啊
#3
ORARichard(没钱的日子好难过啊)是对的.
你用在sql/plus里面用show error看看什么错.
你用在sql/plus里面用show error看看什么错.
#4
代码没有问题,看看是否是拼写的错误!或者半角全角的错误!
#5
CREATE OR REPLACE PACKAGE BODY PackageName AS
PROCEDURE procedure001(param001 OUT NUMBER) IS
BEGIN
SELECT COUNT(*) into param001 FROM TABLE;---ORACLE不允许使用关键字建表(table),如果要用就得加上“”双引号
END procedure001;
END PackageName;
PROCEDURE procedure001(param001 OUT NUMBER) IS
BEGIN
SELECT COUNT(*) into param001 FROM TABLE;---ORACLE不允许使用关键字建表(table),如果要用就得加上“”双引号
END procedure001;
END PackageName;
#6
支持楼上的说法,看看表是否存在,看看表名是否正确
#7
支持楼上的说法
#8
问题解决了,把同样的代码放在PL/SQL DEVELOPER 中编译就是正常的
…………
头一次见到自带的东西出这种问题……
…………
头一次见到自带的东西出这种问题……
#9
眼珠子都快看出来了,也没看出问题:(
#1
你写得没问题,能运行就可以了。用真实的表名替换TABLE就可以了
#2
SQL> CREATE OR REPLACE PACKAGE PackageName AS
2 PROCEDURE procedure001(param001 OUT NUMBER);
3 END PackageName;
4 /
程序包已创建。
SQL> CREATE OR REPLACE PACKAGE BODY PackageName AS
2 PROCEDURE procedure001(param001 OUT NUMBER) IS
3 BEGIN
4 SELECT COUNT(*) into param001 FROM jbxx;
5 END procedure001;
6 END PackageName;
7 /
程序包主体已创建。
SQL>
没问题啊,看看是不是你的当前用户下没有“table"这张表啊
2 PROCEDURE procedure001(param001 OUT NUMBER);
3 END PackageName;
4 /
程序包已创建。
SQL> CREATE OR REPLACE PACKAGE BODY PackageName AS
2 PROCEDURE procedure001(param001 OUT NUMBER) IS
3 BEGIN
4 SELECT COUNT(*) into param001 FROM jbxx;
5 END procedure001;
6 END PackageName;
7 /
程序包主体已创建。
SQL>
没问题啊,看看是不是你的当前用户下没有“table"这张表啊
#3
ORARichard(没钱的日子好难过啊)是对的.
你用在sql/plus里面用show error看看什么错.
你用在sql/plus里面用show error看看什么错.
#4
代码没有问题,看看是否是拼写的错误!或者半角全角的错误!
#5
CREATE OR REPLACE PACKAGE BODY PackageName AS
PROCEDURE procedure001(param001 OUT NUMBER) IS
BEGIN
SELECT COUNT(*) into param001 FROM TABLE;---ORACLE不允许使用关键字建表(table),如果要用就得加上“”双引号
END procedure001;
END PackageName;
PROCEDURE procedure001(param001 OUT NUMBER) IS
BEGIN
SELECT COUNT(*) into param001 FROM TABLE;---ORACLE不允许使用关键字建表(table),如果要用就得加上“”双引号
END procedure001;
END PackageName;
#6
支持楼上的说法,看看表是否存在,看看表名是否正确
#7
支持楼上的说法
#8
问题解决了,把同样的代码放在PL/SQL DEVELOPER 中编译就是正常的
…………
头一次见到自带的东西出这种问题……
…………
头一次见到自带的东西出这种问题……
#9
眼珠子都快看出来了,也没看出问题:(