入门级问题!!在线等!!ORACLE9i PL/SQL 建包的问题!!

时间:2022-02-03 20:57:25
在SQL*PLUS中建包老出问题,然后作了一个最简单的,还是有问题……
本人今天才开始学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"这张表啊

#3


ORARichard(没钱的日子好难过啊)是对的.
你用在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;

#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"这张表啊

#3


ORARichard(没钱的日子好难过啊)是对的.
你用在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;

#6


支持楼上的说法,看看表是否存在,看看表名是否正确

#7


支持楼上的说法

#8


问题解决了,把同样的代码放在PL/SQL DEVELOPER 中编译就是正常的
…………

头一次见到自带的东西出这种问题……

#9


眼珠子都快看出来了,也没看出问题:(