SQL - 如果没有它的规范</package>,就无法编译<package>的主体

时间:2015-03-20 14:54:18

标签: sql oracle plsql

尝试创建一个将进行计算的包:一个过程包含一个带数字的变量,然后我将调用该包和变量,然后进行计算并打印出来。但是我得到“my_pkg无效”和“无法编译没有其规范的主体” 欢迎提出任何意见

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;
/

1 个答案:

答案 0 :(得分:1)

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

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;
/