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

标签 sql oracle plsql

关闭。这个问题是not reproducible or was caused by typos .它目前不接受答案。












想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。

6年前关闭。




Improve this question




尝试创建一个将进行计算的包:一个过程保存一个带有数字的变量,然后我将调用该包以及该变量,然后进行计算并打印出来。但是我知道“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;
/

最佳答案

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

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

关于SQL - 没有规范就无法编译 <package> 的主体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29169465/

相关文章:

database - 在启动时启动 oracle dequeue

java存储过程——Oracle中的资源文件

oracle - 当在表中找不到给定记录时如何处理游标异常

mysql - 使用外键跟踪新关系中的所有权

mysql - 根据不同行中的值从同一列中选择值(如 INDEX/MATCH?)

oracle - 如何解决 OWBSYS 用户中无效的 JAVA CLASS

debugging - PL/SQL Developer 的调试器不进入过程的原因?

java - 如何通过 Exception getCause() 循环查找带有详细消息的根本原因

mysql - 连接三个表以查找 friend 访问过的地方

mysql - 从具有外键约束的表中删除行