SQL - 无法编译没有规范的 <package> 的主体

SQL - cannot compile body of <package> without its specification

尝试创建一个将进行计算的包:一个过程包含一个带有数字的变量,然后我将调用该包以及该变量,然后进行计算并打印出来。但是我知道 "my_pkg is invalid" 和 "cannot compile body of without its specification" 欢迎任何意见

create or replace package my_pkg as
Procedure do_calc(v_add number);
v_sum number;
v_number number;
end my_pkg;
/

create or replace package body my_pkg as
Procedure do_calc (v_add number) is
v_sum number;
v_number number;
begin
v_number := 10; 
v_sum := v_number + v_add;
dbms_output.put_line('sum is: '||v_sum);
end do_calc;
end my_pkg;
/

我删除了您在包中声明的变量,因为它们不是必需的。您在过程中使用的变量可以在包中声明,但它们对于在包上执行的任何人都是全局的。另外,作为一个提示,不要在同一个包中声明在不同范围内的同名变量,这会使调试变得困难。

create or replace package my_pkg as
Procedure do_calc(v_add_in number IN);
--v_sum number;  --you don't need these, they are internal package variables
--v_number number;
end my_pkg;
/

create or replace package body my_pkg as
Procedure do_calc (v_add_in number IN) is
v_sum number;
v_number number;
begin
v_number := 10; 
v_sum := v_number + v_add;
dbms_output.put_line('sum is: '||v_sum);
end do_calc;
end my_pkg;
/