我是Oracle的新手。
我正在尝试创建一个包但它会抛出一个错误:
Source does not have a runnable target.
我想要做的是创建一个包并在包体中定义一些存储过程。
这是我的包装定义的样子:
CREATE OR REPLACE
PACKAGE PAY_ZONE_PKG AS
TYPE CURSOR_TYPE IS REF CURSOR;
PROCEDURE spGetZones(Zones_Cursor OUT CURSOR_TYPE);
END PAY_ZONE_PKG;
这是我的包体看起来像:
create or replace
PACKAGE BODY PAY_ZONE_PKG IS
PROCEDURE spGetZones(Zones_Cursor OUT CURSOR_TYPE) AS
BEGIN
OPEN Zones_Cursor FOR
SELECT *
FROM ESP.PAY_ZONE
ORDER BY NAME ASC;
EXCEPTION
WHEN NO_DATA_FOUND
THEN NULL;
END spGetZones;
END PAY_ZONE_PKG;
当我尝试创建包体时,它会抛出错误
cannot compile body of 'PAY_ZONE_PKG' without its specification
我在这里缺少什么?
答案 0 :(得分:1)
cannot compile body of 'PAY_ZONE_PKG' without its specification
表示create or replace package PAY_ZONE_PKG
不成功,或者在尝试编译正文后删除了包规范。
所以,问题不在于身体,而在于规范。
答案 1 :(得分:0)
我无法复制。
代码:
CREATE OR REPLACE
PACKAGE PAY_ZONE_PKG AS
TYPE CURSOR_TYPE IS REF CURSOR;
PROCEDURE spGetZones(Zones_Cursor OUT CURSOR_TYPE);
END PAY_ZONE_PKG;
编译。
并且身体也成功创造。
您是否尝试过独立创建它们?第一个规范,然后是身体。